0

次のように、ユーザーの情報バーをレンダリングしたいアプリがありますapplication.hbs

{{render "userInfoBar"}}

{{outlet}}

<footer id="footer-info">copyright by me</footer>

UserInfoBarController対応する Ember クラスから派生したとUserInfoBarViewクラスを作成し、init()両方の関数からログ出力を書き込みます。ここで、UserInfoBarViewsinit()メソッドが 2 回呼び出されることがあります。のメソッドの前に初めて呼び出され、コントローラーが初期化された後に再度呼び出されます。したがって、最初に初期化されたものが前に挿入されたため、に a を設定できません...init()UserInfoBarControllerelementIdUserInfoBarViewUserInfoBarView

生成されるログ出力は次のとおりです。

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 回レンダリングされるのはなぜですか?

4

0 に答える 0