2012-04-27 5 views
1

にこれを結合して、メソッド内で私が持っている:

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

しかし、それは$.eachにだから、this.$elは未定義です。

私は​​を持っていますが、それぞれの外部で動作します。だから、私はそれをバインドする必要がありますか?

何か助けてもらえますか?

+0

Ack私はちょうど質問を再読しました、これは私が投稿したものの欺瞞ではありません。それを無視してください。ごめんなさい。 –

答えて

10

あなたはアンダースコアを持っているし、それはあなたが_.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(); 
}); 

ここに2つのアンダースコアアプローチの簡単なデモがあります:http://jsfiddle.net/ambiguous/dNgEa/

+0

恐ろしい、ありがとう! – dzm

2

がループする前に、ローカル変数を設定していただきありがとうございます:

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

十分に簡単...ありがとう:) – dzm

関連する問題