触发$ .each循环内的事件

时间:2014-04-25 11:47:59

标签: twitter-flight

我有一个数据组件,它通过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;
      }
        });
    };

2 个答案:

答案 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() {

}