基本問題
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 で期待どおりに機能します。