2010-12-31 4 views
1

У меня есть следующие функции:Почему моя функция возвращает «функцию», а не целочисленный результат?

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?

+2

'ko.dependentObservable()' возвращает функцию, а не возвращаемое значение анонимной функции, которую вы передаете. – BoltClock

ответ

2

С ko.dependentObservable() возвращается функция, так как BoltClock указал, вы должны быть в состоянии вызвать функцию она возвращает с помощью этого несколько странного вида синтаксиса:

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

Это будет выполнять приложение функции на функция, которая возвращается, а не только unreadCount член viewModel.

Смежные вопросы