6

Ember.View サブクラスのメソッドで、ビュー要素が既に DOM に挿入されている場合にのみDOM を変更したいと考えています。どうすればそれを確認できますか?

次のような補助プロパティを作成できることはわかっています。

didInsertElement: function() {
  this.set('elementIsInserted', true);
}
willDestroyElement: function() {
  this.set('elementIsInserted', false);
}

しかし、標準的な組み込みの方法はありますか?

view.jsをスキミングするものは何も見つかりませんでしたが、何か不足している可能性があります。

4

2 に答える 2

13

すべてのビューには_stateプロパティがあり、要素が挿入されると「inDOM」に設定されます。

if (this._state=="inDOM") doStuff();

動作するはずです。あなたが正しいことを確認してくださいthis

于 2012-05-13T02:00:03.547 に答える
9

補助フラグを設定する必要がない場合は、Ember.Viewを拡張できます。

Ember.View.reopen({
    didInsertElement: function() {
       this.set('elementIsInserted', true);
       this._super();
    },

    willDestroyElement: function() {
       this.set('elementIsInserted', false);
       this._super();
    }
});

これで、Ember.Viewを拡張するすべてのビューが上記を取得します。

また、コアチームのメンバーは、inDOMこれは内部変数であり、コードでの使用を目的としていないため、参照を避けることを提案しました。

于 2012-05-13T07:06:06.427 に答える