I am using this in part of my template:
{{if !IsDefault}}
<a href="#" onclick="makeDefault('${Id}');return false;">Make Default</a>
{{/if}}
Except when IsDefault is false it is not working. I even tried:
{{if IsDefault === false}}` and `{{if IsDefault == false}}
I have verified that the value actually is false in my json object that gets passed to the template.
I also tried this which works but is pretty ugly and I would prefer for it to just work how it should:
{{if IsDefault}}
{{else}}
<a href="#" onclick="makeDefault('${Id}');return false;">Make Default</a>
{{/if}}
Also, if I change it to check for a true condition (doesn’t make sense but just tried it for debugging purposes)…
{{if IsDefault}}
…it works fine. Looks like it just has problems with the false values. I am getting the json via an jQuery ajax call and using knockout mapping with jquery tmpl. I get no js errors.
Any ideas on why testing for false or !false is not working?
Try using
{{if !(IsDefault())}}If you are using an observable that is not in an expression, then jQuery templates sees that it is a function and calls it as a function to get the observable’s value. If it is in an expression, then this doesn’t happen and you need to call your observable as a function (with no args) to get its value.