在我的javascript应用程序中,我在页面加载时收到以下错误。
Uncaught TypeError : Object #<Object> has no method 'showHideCleanupButton'
这会出现(在Chrome的调试器中)在方法'getAllItemsForDisplay'中爆炸,它调用'this.showHideCleanupButton'
这是jsFiddle上的链接: http://jsfiddle.net/cpeele00/4fVys/
非常感谢任何帮助: - )
谢谢,
克里斯
答案 0 :(得分:1)
看来这是相关的代码:
getAllItemsForDisplay: function() {
$.getJSON('services/act_getAllItems/', function(data) {
$('#items-list').empty();
$('#items-listTmpl').tmpl(data).appendTo('#items-list');
this.showHideCleanupButton();
BeefyUtils.noSelect();
});
},
您期望在this
回调中设置getJSON
是什么?您是否在相关声明中设置了断点并查看了this
的值是什么?
如果我理解jQuery doc是正确的,那么在getJSON调用中默认this
将是对最初传入的ajax选项的引用。我认为可以更改this
将是什么使用ajaxSetup,但我没有看到你已经完成了。
如果您想在this
开头引用getAllItemsForDisplay
,那么您需要将其保存到另一个可以使用的变量中:
getAllItemsForDisplay: function() {
var obj = this;
$.getJSON('services/act_getAllItems/', function(data) {
$('#items-list').empty();
$('#items-listTmpl').tmpl(data).appendTo('#items-list');
obj.showHideCleanupButton();
BeefyUtils.noSelect();
});
},
答案 1 :(得分:1)
要捎带jfriend00的答案,请更改:
getAllItemsForDisplay: function() {
$.getJSON('services/act_getAllItems/', function(data) {
$('#items-list').empty();
$('#items-listTmpl').tmpl(data).appendTo('#items-list');
this.showHideCleanupButton();
BeefyUtils.noSelect();
});
},
到此:
getAllItemsForDisplay: function() {
var self = this;
$.getJSON('services/act_getAllItems/', function(data) {
$('#items-list').empty();
$('#items-listTmpl').tmpl(data).appendTo('#items-list');
self.showHideCleanupButton();
BeefyUtils.noSelect();
});
},
这将为您提供名为getAllItemsForDisplay的上下文,我认为这是您想要的。