扩展Knockoutjs对象

时间:2013-07-03 13:47:27

标签: javascript knockout.js

除了使用他们在文档中所说的内容之外,还有办法扩展KnockoutObservableAny吗?

ko.extenders.logChange = function(target, option) {
    target.subscribe(function(newValue) {
       console.log(option + ": " + newValue);
    });
    return target;
};

被叫:

this.firstName = ko.observable("Bob").extend({logChange: "first name"});

我更喜欢直接从对象上调用它(因为我正在使用typescript,所以使用intellisense),但我无法找到以JQuery的方式访问构造函数的位置。

(function ($) {
    $.fn.foo = function () {
    };
})(jQuery);

那么我可以称之为$().foo();

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用文档中所述的ko.subscribable“模式”向任何fn添加自定义函数:Adding custom functions using "fn"

因此,您可以添加附加功能,例如ko.observableArray

(function (ko) {
    ko.observableArray.fn.foo = function () {
    //...
    };
})(ko);

或者只是简单地不使用立即执行的函数:

ko.observableArray.fn.foo = function() {
  //..
}