我有一个函数可以检查值是否为数字,如果值是数字,则返回true
,如果不是,则返回false
。
function isNumber(value) {
if (!isNaN(value)) {
console.log(value + ' is a number')
return true;
} else {
console.log(value + ' is NaN')
return false;
}
}
<input type="text" data-bind="value: budget">
<span data-bind="visible: isNumber(budget)">Content</span>
当budget
的值更新时,我会按预期看到正确的控制台日志,但可见绑定不起作用。
答案 0 :(得分:2)
在您的问题中未明确说明,但我认为budget
是可观察的;
this.budget = ko.observable()
然后{j}方面的budget
不是数字而是函数。这就是visible
绑定不显示您的元素的原因。您可以查看文档http://knockoutjs.com/documentation/observables.html
在您的情况下,您必须使用:
绑定中可预见的预算值
<span data-bind="visible: isNumber(budget())">Content</span>
您的视图模型中的计算可观察值仍将使用budget()
http://jsfiddle.net/LkqTU/18868/
由于更好的逻辑/视图分离,这种方法通常被认为是优越的。
答案 1 :(得分:0)
如果我将budget
作为函数传递,它就有效。
<span data-bind="visible: isNumber(budget())">Content</span>