Есть ли способ различать ложные и неопределенные в шаблоне пыли? Я считаю:Есть ли способ различать ложные и неопределенные в шаблоне пыли?
{^myVariable}
Hello
{/myVariable}
напечатает Hello
если myVariable
не определен правильно?
Есть ли способ различать ложные и неопределенные в шаблоне пыли? Я считаю:Есть ли способ различать ложные и неопределенные в шаблоне пыли?
{^myVariable}
Hello
{/myVariable}
напечатает Hello
если myVariable
не определен правильно?
Как вы заметили, Пыль не сравнивается с правдивостью, а на «пустоте», поэтому вы не можете специально проверить фальшивость переменной.
Вместо этого вы можете использовать компаратор {@eq}
, но вы должны быть осторожны с тем, что вы сравниваете. Вы не можете слепо использовать ключевое слово Javascript undefined
, потому что Dust просто прочитает его как ссылку на переменную undefined
(что, вероятно, безопасно, но может дать вам ошибку). Так что это нормально:
{@eq key=myVariable value="undefined" type="string"}myVariable is undefined{/eq}
{@eq key=myVariable value=somethingImSureDoesntExist}myVariable is undefined{/eq}
Но вы не можете проверить обратное, так как с помощью type="boolean"
будет отбрасывать как ключ и значение
{@eq key=myVariable value="false" type="boolean"}
myVariable might be 0, undefined, null, false, etc...
{/eq}
{@eq key=myVariable value=somethingInContextIKnowIsAlwaysFalse}
This is sloppy because you have to include a dummy "false" in your context, but it works!
{/eq}
Так что, если вам действительно нужно проверить === false
, вы должны написать быстрый помощник:
dust.helpers.isFalse = function(chunk, context, bodies, params) {
return context.resolve(params.key) === false;
}
И использовать его как:
{@isFalse key=myVariable}
myVariable is exactly false!
{:else}
myVariable is something else
{/isFalse}
Все это говорит о том, что вы, вероятно, будете намного счастливее, если вы позволите Пыли использовать его проверки пустоты вместо этого, не требуя, чтобы ваши шаблоны заботились о разнице между неопределенным и ложным.
Я закончил делать еще несколько логических действий перед тем, как отобразить шаблон и избежать ложной и неопределенной проблемы. – linuxdan