Backbone.js的结合这$。每(Backbone.js bind this to $.each

2019-10-16 16:14发布

我使用backbonejs和方法里面,我有:

$.each(response.error, function(index, item) {
    this.$el.find('.error').show();
});

然而,因为它是在$.eachthis.$el是不确定的。

我有_.bindAll(this, 'methodName')这将在外工作的每一个。 所以,现在我需要中的绑定呢?

任何帮助woudl是伟大的! 谢谢

Answer 1:

您使用的骨干,所以你有下划线,这意味着你有_.each

每个 _.each(list, iterator, [context])

迭代元素的列表 ,得到每个依次迭代器功能。 迭代器被绑定到上下文对象,如果一个被传递。

所以,你可以这样做:

_.each(response.error, function(item, index) {
    this.$el.find('.error').show();
}, this);

或者你可以使用_.bind

$.each(response.error, _.bind(function(index, item) {
    this.$el.find('.error').show();
}, this));

或者,因为你一遍又一遍,预先计算发现同样的事情,并停止关心this

var $error = this.$el.find('.error');
$.each(response.error, function(index, item) {
    $error.show();
});

下面是两个下划线方法的快速演示: http://jsfiddle.net/ambiguous/dNgEa/



Answer 2:

设置循环前的局部变量:

var self = this;
$.each(response.error, function(index, item) {
    self.$el.find('.error').show();
});


文章来源: Backbone.js bind this to $.each