这似乎是一个简单的实现:
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())()
不用说,不理想。
答案 0 :(得分:1)
是的,你正在返回实际的计算可观察函数,我相信你已经知道了。就目前而言,我建议调用你在findEl函数中返回的计算observable的值访问器,然后返回该值。至少将它保存在你的一个函数中,你不必担心每次都必须用()()来调用函数。
答案 1 :(得分:1)
仅当您使用它在视图模型中定义新的observable时才有效:
function User() {
this.following = ko.observableArray([]);
this.el = this.following.findEl(valueAccessor());
}