为什么我的函数返回“函数”而不是整数结果?

时间:2010-12-31 21:42:58

标签: jquery knockout.js

我有以下功能:

viewModel.unreadCount = ko.dependentObservable(function() {   
    var unreadCount = 0;

    for (var i = 0; i x< xxxxxxxxxxxx.length; i++) {
        if (xxxxxx == false) {
            unreadCount++;
        }
    }

    return unreadCount;
}, viewModel);

当我在KnockoutJS中使用它时,我不能做一个简单的if (viewModel.unreadCount()==0),如下所示:

<div data-bind="visible: viewModel.unreadCount()==0">

事实证明,因为当我跑步时:

<p>${ (typeof viewModel.unreadCount) }</p>

我得到“功能”。

任何想法为什么会这样,以及如何让它返回INT以便我可以做一个if语句?

1 个答案:

答案 0 :(得分:2)

由于ko.dependentObservable()正在返回一个函数,正如BoltClock指出的那样,你应该能够通过使用这种有点奇怪的语法来调用它返回的函数:

<div data-bind="visible: (viewModel.unreadCount)()==0">

然后,这将对返回的函数执行函数应用程序,而不仅仅是unreadCount的{​​{1}}成员。