次のように、ユーザーの情報バーをレンダリングしたいアプリがありますapplication.hbs
。
{{render "userInfoBar"}}
{{outlet}}
<footer id="footer-info">copyright by me</footer>
UserInfoBarController
対応する Ember クラスから派生したとUserInfoBarView
クラスを作成し、init()
両方の関数からログ出力を書き込みます。ここで、UserInfoBarView
sinit()
メソッドが 2 回呼び出されることがあります。のメソッドの前に初めて呼び出され、コントローラーが初期化された後に再度呼び出されます。したがって、最初に初期化されたものが前に挿入されたため、に a を設定できません...init()
UserInfoBarController
elementId
UserInfoBarView
UserInfoBarView
生成されるログ出力は次のとおりです。
UserInfoBarView:: init() called...
UserInfoBarController:: init() called...
UserInfoBarView:: init() called...
UserInfoBarView:: inserted to DOM...ember195
UserInfoBarView:: inserted to DOM...ember198
これはコントローラーです:
App.UserInfoBarController = Ember.ObjectController.extend({
init: function() {
console.debug('UserInfoBarController:: init() called...');
}
});
これはビューです:
App.UserInfoBarView = Ember.View.extend({
tagName: 'div',
classes: ['container', 'centered'],
init: function() {
console..debug('UserInfoBarView:: init() called...');
},
didInsertElement: function() {
console.debug('UserInfoBarView:: inserted to DOM...' + this.$().attr('id'));
}
});
編集:
userInfoBar
テンプレートは次のとおりです。
{{#view App.UserInfoBarView}}
<div id="userInfoBarDetails1">
</div>
<div id="userInfoBarDetails2">
</div>
<div id="userInfoBarDetails3">
{{controller.fullname}}
</div>
{{/view}}
UserInfoBarView
が 2 回レンダリングされるのはなぜですか?