2014-02-24 41 views
2

我试图通过使用命名空间提供一些结构来我敲代码:绑定命名空间中的视图模型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这样的东西?

回答

3

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

var viewModel = new Namespace.ViewModel(); 

通知的new关键字。

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

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

这不是问题。但你应该写var viewModel = new Namespace.ViewModel();(与new),并没有理由return viewModel;。看到这个Fiddle