我想问一下这些KO绑定之间的区别

时间:2013-11-26 04:47:46

标签: knockout.js knockout-2.0

我想问一下这两个应用绑定的区别 在我的代码上我改变很多,因为我使用数字2.请定义。感谢。

首先

 var viewModel = function ()
 {
  ...
  ...
 }

 var VM = new viewModel();

 $(function() {
    ko.applybinding(VM)
 })

OR

 var viewModel = function ()
 {
  ...
  ...
 }

 $(function() {
    var VM = viewModel();
    ko.applybinding(VM)
 })

1 个答案:

答案 0 :(得分:3)

这取决于viewModel是作为“经典”构造函数实现的,需要使用new实例化,还是作为显式返回对象的“工厂”。

经典构造函数的示例:

function ViewModel() {
  var self=this;
  self.property=ko.observable();
  self.list=ko.observableArray();
}

请注意,标准JavaScript约定是以大写字母开始经典构造函数的名称。

工厂/功能构造函数的示例:

function viewModel() {
  var self={};
  self.property=ko.observable();
  self.list=ko.observableArray();
  return self;
}

在大多数情况下,只需要个人选择即可使用。我建议阅读Douglas Crockford的 JavaScript:The Good Parts 中关于对象和继承的章节,以掌握细微差别。如果您正在创建继承层次结构或使用instanceof执行大量运行时类型推断,那么“经典”方法可能会更好;如果你使用函数式编程风格,那么“工厂”方法可能会更好,因为你可以简单地将工厂作为回调传递,而不必一直包装它。