2012-03-31 85 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()); 
}