2012-03-31 12 views
0

Dies scheint eine einfache Implementierung:Knockout.js benutzerdefinierte Funktion zurückkehr Funktion anstelle von Wert

ko.observableArray.fn.findEl = function(id) { 
    return ko.computed(function() { 
     var ary = this(); 
     return _.any(ary, function(user) { return user.id() === id;}); 
    }, this); 
}; 

Aber wenn ich es nennen mag:

user.current.following.findEl(valueAccessor()) 

Es gibt eine Funktion, mich erfordern zu anrufen findEl like:

user.current.following.findEl(valueAccessor())() 

was unnötig zu sagen ist, nicht ideal.

Antwort

1

Richtig, Sie geben die tatsächlich berechnete beobachtbare Funktion zurück, die Ihnen sicher bekannt ist. So wie es aussieht, würde ich vorschlagen, den Wert acceptor des berechneten Observablen, das Sie zurückgeben, innerhalb Ihrer findEl-Funktion anzugeben und diesen Wert einfach zurückzugeben. Dadurch bleibt es zumindest in Ihrer einen Funktion und Sie müssen sich keine Sorgen machen, dass Sie die Funktion jedes Mal mit der Taste()() aufrufen müssen.

1

Dies funktioniert nur, wenn Sie es verwenden, um eine neue beobachtbaren Ihrer Ansicht nach Modell zu definieren:

function User() { 
    this.following = ko.observableArray([]); 
    this.el = this.following.findEl(valueAccessor()); 
} 
Verwandte Themen