VM이 전역으로이 위의 코드 vm.updatecol에서 최소화 일하는 내 이전 코드의 버전 ..사용 계시 모듈 패턴은 더 이상 글로벌 데이터 등의 문제를 야기
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);
}();
작동되고 다음 appscope에 관한 한. 또한 데이터는 글로벌입니다 ..
이제 VM이 밖으로 나는이 작동하지 않습니다 .. 위의 코드 vm.updatecol에서
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);
을 공개 모듈 패턴을 사용하려고하고 아래에 코드를 변경하고있어 범위. 나는 심지어 그것을 시도했다 .appscope.myModel(). updatecol()하지만 myModel을 다시 만들려고 시도하고 데이터가 없기 때문에 다른 오류가 발생합니다.
어떻게 해결할 수 있습니까? 모든 도움을 진심으로 감사드립니다. 감사합니다.
* * "자바 스크립트 계시 모듈 패턴을 사용하여 더 이상 글로벌 데이터 등의 문제가 만듭니다"아니오 :
target
정말 바꿀 수 있다면, 우리는 내가 위에서 # 3으로 의지하는 이유의 한 부분 인 일부 구독 관리를 할 필요가 아니요, ** 데이터가 더 이상 글로벌이 아니므로 ** ** 문제를 해결합니다. :-) –이번에는 문제가 해결되었지만 도움을 청할 때 일관성 있고 명확한 들여 쓰기/형식 지정을 사용하여 코드의 서식을 지정하십시오. –
myModel에서 다음 줄을 추가하십시오. self.target = ko.observable (null); self, target (new col ([])) – Arnab