Knockout.js自定义函数返回函数而不是值

时间:2012-03-31 16:45:22

标签: javascript 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())()

不用说,不理想。

2 个答案:

答案 0 :(得分:1)

是的,你正在返回实际的计算可观察函数,我相信你已经知道了。就目前而言,我建议调用你在findEl函数中返回的计算observable的值访问器,然后返回该值。至少将它保存在你的一个函数中,你不必担心每次都必须用()()来调用函数。

答案 1 :(得分:1)

仅当您使用它在视图模型中定义新的observable时才有效:

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