gpt4 book ai didi

javascript - JS 模块化设计 - 上下文问题

转载 作者:行者123 更新时间:2023-11-27 23:47:04 24 4
gpt4 key购买 nike

我刚刚开始学习模块化设计原则,我相信我不理解我的一种方法的背景。在控制台中,我收到Uncaught TypeError: Cannot read property 'val' of undefined - line 19。我正在使用 Firebase,如果这很重要的话。

这是我的代码:

(function(){
var UpdateTable = {
resources: Resources,
init: function(){
this.cacheDom();
this.render();
this.update(snapshot); // Changed this line ///
},
render: function(){
this.resources.on('value', this.update);
},
cacheDom: function(){
this.$table = $('#resourceTable');
},
update: function(snapshot){
console.log(snapshot.val());
for(var resource in this.resources){
this.$table.append('<tr><td>' + this.resources[resource].name + '</td><td>' + this.resources[resource].language + '</td></tr>');
}
}
};
UpdateTable.init();
})();

最佳答案

如果您想使其真正模块化,我建议将 snapshot 作为模块的参数传递。这将解决您的问题。

(function(snapshot){ // <----- Here I receive snapshot from the invoker
var UpdateTable = {
resources: Resources,
init: function(){
this.cacheDom();
this.render();
this.update(snapshot); // Changed this line ///
},
render: function(){
this.resources.on('value', this.update);
},
cacheDom: function(){
this.$table = $('#resourceTable');
},
update: function(snapshot){
console.log(snapshot.val());
for(var resource in this.resources){
this.$table.append('<tr><td>' + this.resources[resource].name + '</td><td>' + this.resources[resource].language + '</td></tr>');
}
}
};
UpdateTable.init();
})(snapshot); // <---- Here I am passing snapshot from global context to the module context

关于javascript - JS 模块化设计 - 上下文问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33070509/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com