基本問題
inputイベント --calls--> update()--calls--> geoInput.receive()--triggers-->inputイベント
説明
さて、コードが無限にループする奇妙な問題に遭遇しました。私は次のようなjQueryを持っています:
var geoInput = $('#Geo').on('input', function() {
_this._controller.update({
geo: this.value
});
}).get(0);
ご覧のとおり、これは単なる基本的なイベント リスナーであり、コントローラーで更新関数を呼び出しています。更新関数の最後には、更新するgeoInputフィールドをブロードキャストするメソッドがあります。これは、次によって処理されます。
geoInput.receive = function(formState) {
this.value = formState.geo;
this.placeholder = _this._placeholders.geo;
}
何らかの理由で
this.placeholder = _this._placeholders.geo;
inputそのフィールドでイベントをトリガーしています。これにより無限ループが作成されるため、これがどのように問題になるかがわかります。returnその行の前にループが発生しないため、これが起こっていると確信しています。また、keyupイベントと言えばループも発生しません。
質問
なぜこれが起こっているのですか、どうすれば修正できますか?
私はもう試した!
私はこれを何時間も見て、かなりの数の検索を無駄にしました. このコードは、Chrome と FF で期待どおりに機能します。