Knockout.js可见绑定无法使用函数作为参数

时间:2014-08-30 15:09:23

标签: javascript knockout.js

我有一个函数可以检查值是否为数字,如果值是数字,则返回true,如果不是,则返回false

的Javascript

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的值更新时,我会按预期看到正确的控制台日志,但可见绑定不起作用。

2 个答案:

答案 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>