0
這下面是我前面正在工作的代碼最小化版本..揭示模塊模式產生問題的數據不再是全球
var data = [mydata];
var appscope = function() {
function col(c) {
var self = this;
this.view = ko.observable(false);
this.view.subscribe(function(newValue) {
vm.updateCol();
});
}
var myModel = function() {
var self = this;
self.viewdata = ko.observableArray(data);
self.updateCol = function() {
console.log("updatecol called")
};
};
var vm = new myModel();
ko.applyBindings(vm);
}();
在上面的代碼vm.updatecol作品作爲虛擬機是全球性的就appscope而言。此外數據是全球..
現在我試圖使用暴露模塊模式,改變了代碼如下..
var appscope = function() {
var that = this;
function col(c) {
var self = this;
this.view = ko.observable(false);
this.view.subscribe(function(newValue) {
// vm.updateCol(); no longer works....
//that.appscope.myModel().updatecol(); throws error in myModel
});
}
var myModel = function(data) {
var self = this;
self.viewdata = ko.observableArray(data);
self.target=ko.observable(null);
self.target(new col([]));
self.updateCol = function() {
console.log("updatecol called")
};
};
return {
myModel: myModel
};
}();
(function(appscope) {
var vm = new appscope.myModel([mydata]);
ko.applyBindings(vm);
})(appscope);
在上面的代碼vm.updatecol不起作用爲VM是出的範圍。我什至試圖that.appscope.myModel()。updatecol(),但試圖重新創建myModel和數據不存在引發其他錯誤。
我該如何解決這個問題。 所有幫助真誠感謝。 謝謝
*「使用JavaScript中透出模塊模式產生問題的數據不再是全球性的」 *無不,不,它**解決**問題,因爲數據不再是全球性的。 :-) –
這次我已經爲您解決了這個問題,但是在尋求幫助時,請花時間以一致,明確的縮進/格式設置您的代碼格式。 –
在myModel中添加self.target = ko.observable(null); self,target(new col([])) – Arnab