2012-03-31 86 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 like:

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

這是不用說,不理想。

回答

1

對,你正在返回實際計算的observable函數,我相信你知道。按照我的看法,我建議調用您在findEl函數內返回的計算可觀察值的值存取器,並返回該值。至少將它保留在你的一個函數中,並且你不必擔心每次都必須用()()調用函數。

1

如果你用它在你的視圖模型來定義一個新的觀察到這隻有:

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