我在模板的一部分中使用它:
{{if !IsDefault}}
<a href="#" onclick="makeDefault('${Id}');return false;">Make Default</a>
{{/if}}
除非IsDefault
为假,否则无效。我甚至尝试过:
{{if IsDefault === false}}` and `{{if IsDefault == false}}
我已经验证了我的json对象中传递给模板的值实际上是false。
我也试过这个有效,但非常难看,我更喜欢它应该如何工作:
{{if IsDefault}}
{{else}}
<a href="#" onclick="makeDefault('${Id}');return false;">Make Default</a>
{{/if}}
此外,如果我更改它以检查真实情况(没有意义,但只是为了调试目的而尝试)...
{{if IsDefault}}
......它运作正常。看起来它只是有错误值的问题。我通过jQuery ajax调用获取json并使用jquery tmpl的knockout映射。我没有js错误。
有关为何false
或!false
进行测试无效的任何想法?
答案 0 :(得分:4)
尝试使用{{if !(IsDefault())}}
如果您正在使用不在表达式中的observable,那么jQuery模板会看到它是一个函数并将其作为函数调用以获取可观察值。如果它在一个表达式中,那么这不会发生,你需要将你的observable作为一个函数调用(没有args)来获取它的值。
答案 1 :(得分:1)
对于像这样的Jquery模板:
{{if !IsDefault}}
html_code
{{/if}}
代码解释如下:
if ((typeof(!IsDefault) !== 'undefined' && (!IsDefault) != null) && (typeof(!IsDefault) === 'function' ? (!IsDefault).call($item) : (!IsDefault)))
{
__.push(html_code);
}
由于此typeof(!IsDefault)
而且变量IsDefault
不存在,您将看到 未捕获的ReferenceError:未定义IsDefault
我不知道如何解决这个问题,但与此同时,这对我有用:
{{if IsDefault}}
{{else}}
html_code
{{/if}}