我试图通过使用命名空间为我的淘汰代码提供一些结构:
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这样的东西吗?
答案 0 :(得分:3)
您遇到的问题有不同的原因。您的Namespace.ViewModel
是constructor 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。