2014-02-24 78 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