2016-01-12 2 views

ответ

2

Как вы заметили, Пыль не сравнивается с правдивостью, а на «пустоте», поэтому вы не можете специально проверить фальшивость переменной.

Вместо этого вы можете использовать компаратор {@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} 

Все это говорит о том, что вы, вероятно, будете намного счастливее, если вы позволите Пыли использовать его проверки пустоты вместо этого, не требуя, чтобы ваши шаблоны заботились о разнице между неопределенным и ложным.

+0

Я закончил делать еще несколько логических действий перед тем, как отобразить шаблон и избежать ложной и неопределенной проблемы. – linuxdan

Смежные вопросы