2010-12-31 14 views
1

Ich habe die folgende Funktion:Warum gibt meine Funktion "Funktion" und kein ganzzahliges Ergebnis zurück?

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

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

    return unreadCount; 
}, viewModel); 

Als ich dies in KnockoutJS verwenden, kann ich nicht ein einfaches if (viewModel.unreadCount()==0), wie dies tun:

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

Es stellt sich heraus, denn wenn ich laufen:

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

Ich bekomme "Funktion".

Irgendwelche Ideen, warum das ist und wie ich es bekommen kann, um eine INT zurückzugeben, damit ich eine if-Anweisung machen kann?

+2

'ko.dependentObservable()' gibt eine Funktion zurück, nicht den Rückgabewert der anonymen Funktion, die Sie übergeben. – BoltClock

Antwort

2

Da ko.dependentObservable() zurückkehrt, eine Funktion, wie BoltClock darauf hingewiesen, sollten Sie in der Lage sein, um die Funktion aufzurufen es durch Verwendung dieser etwas seltsam aussehende Syntax gibt:

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

Dies wird dann Funktion Anwendung auf die führen Funktion, die zurückgegeben wird, anstatt nur die unreadCount Mitglied von viewModel.

Verwandte Themen