我有一个数据组件,它通过ajax检索数组对象并将其发送到ui组件进行显示。可能的方法是遍历数据组件内的数组,并将每个元素发送到ui组件(而不是发送整个数组)。
我收到一个错误:未捕获的TypeError:undefined不是该行的函数:ths.trigger(' dataAdded',value); (见下文)
数据组件附加到文档中。
this.handleData = function(){
var ths = this;
$.ajax({
"url": 'url',
"type": "get",
"dataType": "json",
"success": function(data) {
$.each(data, function(index, value){
ths.trigger('dataAdded', value);
});
},
"error": function(jqXHR, status, error) {
console.log("status:", status, "error:", error);
// return;
}
});
};
答案 0 :(得分:0)
我敢打赌handleData
作为一个函数被传递并被调用,而不是在一个对象上调用(这个。)那个this
中的var ths = this
将不会是您的想法。尝试在功能定义之前放置该分配。
var ths = this;
this.handleData = function() {
...
}
原因是this
与函数的绑定只有在你调用obj.handleData
时才会发生,而不是你做这样的事情:
var myHandleFunction = obj.handleData;
myHandleFunction(); // this is NOT obj
答案 1 :(得分:0)
添加' .bind(this);'结束$ .each括号。
this.handleData = function(){
$.ajax({
"url": 'url',
"type": "get",
"dataType": "json",
"success": function(data) {
$.each(data, function(index, value){
this.trigger('dataAdded', value);
}.bind(this);
},
"error": function(jqXHR, status, error) {
console.log("status:", status, "error:", error);
// return;
}
});
};
...
this.after('initialize', function() {
}