@petkopalkoさん、コメントでHolder.jsをプレースホルダー画像に使用したいと言ったことから、Holder.jsの仕組みのためにHolder.run()関数を実行する必要があると言ったように。できることは、Holder.run() を didInsertElement
フックで必要とする各ビューに追加することですが、それはやりたいことではなく、面倒になる可能性があります。
上記のコードから、Ember App Kit (EAK) とリゾルバーを使用して、実際に何をしていると思いますか:
export default Ember.View.extend({...
内部からapp/views/application.js
実際に ApplicationView に関連付けられたビューをエクスポートしているため、アプリケーション ビューはページの読み込み時に挿入されるため、一度だけ実行されます。
didInsertElement
私は少しハッキングをしていましたが、うまくいくように見えるのは、Embers ビュークラス (オブジェクト) を再度開いて、フックに holder.run を追加する必要があることです。Ember基本クラスを再度開くことでEAK内から私から最もうまくいくように思われるのは、app.js
ファイルでそれを行うことです。
app.js
ファイルでは次のようになります。
Ember.View.reopen({
didInsertElement: function(){
Ember.run.next(function(){
Holder.run();
}
}
});
そして、それはちょうど ember.run で動作するようです
Ember.View.reopen({
didInsertElement: function(){
Ember.run(function(){
Holder.run();
}
}
});
そして、必要に応じて、コードを配置する前にすべてのコードを保持できますapp.js
Ember.View.reopen({
didInsertElement : function(){
this._super();
Ember.run.scheduleOnce('afterRender', this, this.afterRenderEvent);
},
afterRenderEvent : function(){
// implement this hook in your own subclasses and run your jQuery logic there
console.log("FIREEEEE");
//You can place the holder.run() function here and not in views
Holder.run();
}
});
再オープン ビューの afterRenderEvent 関数に Holder.run() を配置しない場合。必要と思われるビュー afterRenderEvent 関数に配置する必要があります。
SomeView = Ember.View.extend({
afterRenderEvent: function() {
this._super();
Holder.run();
}
});
これらのアプローチの副作用についてはわかりませんが、実装後に調べることができます。したがって、ここにはいくつかのオプションがあります。ハッピーコーディング。
ここに添付されているのは、あなたが探していると思われる動作を説明しているように見える jsbin です。
http://emberjs.jsbin.com/medamata/6/edit