Эй, @petkopalko из того, что вы сказали в комментариях, которые хотите использовать Holder.js для изображений с заполнителем, и, как вы сказали, вам нужно выполнить функцию Holder.run() из-за того, как работает функция holder.js. Что вы можете сделать, так это добавить Holder.run() в каждое представление, которое нуждается в нем в крюке didInsertElement
, но это не то, что вы хотите сделать, и это может утомиться.
Теперь из кода выше, с Ember App Kit (ЕАК) и распознаватель я думаю, что вы на самом деле делаете, говоря:
export default Ember.View.extend({...
изнутри app/views/application.js
фактически экспортирует вид, связанный с ApplicationView, который поэтому выполнение будет выполняться только один раз, потому что Application View получает вставку при загрузке страницы.
Я немного взломал и, похоже, работает, что вам нужно снова открыть класс (объект) класса Embers и добавить держатель.run в крючок didInsertElement
. Что, кажется, лучше всего работает от меня из EAK с повторным открытием базовых классов Ember, это сделать это в файле 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();
}
});
Если вы не разместите Holder.run() в своей функции afterRenderEvent в режиме повторного открытия. Вам нужно будет поместить его в функцию afterRenderEvent, которую вы, похоже, хотите.
SomeView = Ember.View.extend({
afterRenderEvent: function() {
this._super();
Holder.run();
}
});
Не уверен в побочных эффектах с этими подходами, но вы можете исследовать их после внедрения. Итак, у вас есть несколько вариантов: счастливое кодирование.
Прикрепленный вот jsbin, который, кажется, чтобы проиллюстрировать поведение, что я думаю, что вы ищете:
http://emberjs.jsbin.com/medamata/6/edit
Что вы пытаетесь сделать каждый раз? – Kingpin2k
@ kingpin2k Я хочу выполнить плагин [Holder.run()] (http://imsky.github.io/holder/) для перерисовки изображений. – petkopalko
Я не уверен в отношениях с EAK, но вам нужно запустить Holder. run() в цикле запуска ember. Итак, Holder.run() нужно вызвать в Ember.run() – elrick