1

#each で出力されるいくつかのビューを含む次のハンドルバー テンプレートがあります。

<script type="text/x-handlebars" data-template-name="thread">
  {{#view My.ContainerView}}
      {{#each message in messages}}
          {{view My.MessageView contentBinding="message"}}
      {{/each}}
  {{/view}}
</script>

親ビューの挿入をキャッチするために didInsertElement イベントを使用しています。

各 My.MessageView の挿入時に発生する didInsertElement があることは知っていますが、すべての My.MessageViews が挿入されたときにイベントが発生したかどうか疑問に思っていましたか? #each が終了したことを意味します。ビューが完全にレンダリングされている場合、同様のイベントが発生する可能性がありますか?

//エンバーヌービー

4

1 に答える 1

1

子ビューがレンダリングされた後にjqueryイベントを発生させる場所に関して、同様のシナリオに遭遇しました。このフォーラムの助けを借りて、次のような結果になりました。

以下のビューは、(ブートストラップ アコーディオンの場合) ajax するアイテムごとに 1 回レンダリングされます。

App.AccItemView = Em.View.extend
  classNames: ['accordion-group']
  templateName: 'acc_item'
  didInsertElement: ->
    Ember.run.next this, ->
      @.$('.collapse').collapse({parent:"#accordion2"})

afterRender フックもありますが、これはまだ実験中です。

didInsertElement: ->
    Ember.run.scheduleOnce 'afterRender', this, () ->
      @.$('.collapse').collapse({ parent:'#accordion2'})

役に立つ場合は、ここにフィドルがあります。 http://jsfiddle.net/nrionfx/s59fA/16/

于 2013-03-14T18:27:53.283 に答える