Knockout将方法添加到已定义的模型中

时间:2014-01-16 14:30:36

标签: javascript mvvm knockout.js

有没有办法将新方法添加到已定义的模型中,例如

var MyModel = function() {

   var self = this;
   self.method1 = function () {
     return true;
   }
   self.method2 = function () {
     return true;
   }
};


viewModel = new MyModel ();
ko.applyBindings(viewModel);

这使我可以访问viewModel.method1()viewModel.method2(),但我希望以后能够以相同的方式在文件中添加新方法,例如。

viewModel.extend = function() {
   self.method3 = function () {
     return true;
   }
}

现在我可以访问viewModel.method1()viewModel.method2()viewModel.method3()

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:1)

您可以使用原型定义一个:

MyModel.prototype.method3 = function() {
    var self = this; // Reference to instance of MyModel
    var m1 = self.method1();
    var m2 = self.method2();
    return true;
};

在你的例子中:

var MyModel = function() {

   var self = this;
   self.method1 = function () {
     return true;
   }
   self.method2 = function () {
     return true;
   }
};


viewModel = new MyModel ();
ko.applyBindings(viewModel);

MyModel.prototype.method3 = function() {
    return true;
};

console.log(viewModel.method3());