绑定knockout.js中的命名空间视图模型

时间:2014-02-24 11:15:23

标签: javascript knockout.js

我试图通过使用命名空间为我的淘汰代码提供一些结构:

var Namespace = Namespace || {};

Namespace.ViewModel = function(){
  self = this;
  self.test = function() {
    console.log('test');
  }
};

Namespace.Start = function(){
  var viewModel = Namespace.ViewModel();
  ko.applyBindings(viewModel);
  return viewModel;
};

问题是要将它绑定到视图我必须使用<li data-bind="click: Namespace.test"></li>之类的命名空间,这是预期的行为还是我可以某种方式只使用data-bind="click: test",或者可能有更好的方法不使用require.js这样的东西吗?

2 个答案:

答案 0 :(得分:3)

您遇到的问题有不同的原因。您的Namespace.ViewModelconstructor function,应该像这样调用:

var viewModel = new Namespace.ViewModel();

请注意new关键字。

您可以在this jsfiddle中看到它正常工作。它允许你只写:

<button data-bind="click: test">Test Me</button>

答案 1 :(得分:1)

这不是问题。但是你应该写var viewModel = new Namespace.ViewModel();new},return viewModel;没有理由。请参阅此Fiddle