我对淘汰赛有点新鲜。我有一个基于可观察变量启用或禁用的按钮。 看来绑定只有在我用括号时才有效。
任何人都知道为什么会这样吗?我的理解是我们应该能够绑定没有括号的可观察变量
self.noTaxResidencyChecked = ko.observable(false);
//works fine
<button data-bind="enable: !noTaxResidencyChecked()"></button>
//doesn't work
<button data-bind="enable: !noTaxResidencyChecked"></button>
答案 0 :(得分:2)
这归结为一个物体的真实(ness)。这是javascrpt中默认的工作方式。当你使用'!'时运营商标准的javascript比较开始
var x = ko.observable(null);
!! x // true - observable本身是一个计算结果为true的对象 !! x()// false - 您现在正在查看observable中的对象,该对象为null,并且计算结果为false
每当你使用时都是一样的!标记中的运算符
// true if it evaluates to true
<button data-bind="enable: !noTaxResidencyChecked()"></button>
// true no matter what because the property is an observable object
<button data-bind="enable: !noTaxResidencyChecked"></button>
你可以做什么
<button data-bind="disable: noTaxResidencyChecked"></button>
// since you are not using a '!' knockout does its standard look into the object
但这可能不符合您的需求