2012-03-31 18 views
0

これは簡単な実装のように思える:Knockout.jsカスタム関数を返す関数の代わりに、値

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

しかし、私は同じようにそれを呼び出すとき:

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

これは、呼び出すために私を必要とし、関数を返しますfindElは次のようになります。

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

これは言うまでもなく、理想的ではありません。

答えて

1

あなたが認識している実際の計算可能な観測可能関数を返しています。それは私があなたのfindEl関数の中に返す計算されたobservableの値アクセサーを呼び出し、その値を返すことを意味します。それは少なくともあなたの1つの機能の中にそれを保持し、毎回()()で関数を呼び出す必要がないことを心配する必要はありません。

1

あなたのビューモデルに新たな観測可能を定義するためにそれを使用する場合にのみ動作します:

function User() { 
    this.following = ko.observableArray([]); 
    this.el = this.following.findEl(valueAccessor()); 
} 
関連する問題