3
什麼是正確的方式來運行JavaScript(在我的情況下,jQuery)來修改DOM的一部分(一個Ember視圖)。適用於domready與Ember.js
在我看來,使用didInsertElement
不會在路由上下文更改之間運行。例如。從一個職位到另一個職位。
App.PageView = Ember.View.extend({
didInsertElement: function() {
console.log(this.$().find('img').length);
}
});
嘗試使用afterRender
掛鉤但結果相同。我認爲這是因爲Ember只更新Handlebars變量而不是它自己的視圖,因爲它們來自同一個模型。
App.PageView = Ember.View.extend({
didInsertElement: function() {
Ember.run.scheduleOnce('afterRender', this, this.afterRenderEvent);
},
afterRenderEvent: function() {
console.log(this.$().find('img').length);
}
});
我相信我得到它的工作的觀察員連接到這樣的didInsertElement:
App.PageView = Ember.View.extend({
didInsertElement: function() {
Ember.run.scheduleOnce('afterRender', this, this.afterRenderEvent);
}.observes('controller.images'),
afterRenderEvent: function() {
if (this.$()) {
console.log(this.$().find('img').length);
}
}
});
的觀察是聽我的模型我的「圖像」屬性,它似乎工作。是否正確的做法?似乎有點過分,或者我錯過了什麼?
作爲一個例子,我的模型模板有一些我需要修改的圖像。
謝謝,它的工作。爲了避免出現undefined,我不得不在Ember.run.next()裏添加一個額外的檢查,如下所示:if(!self。$()){return false; } – donleche