0

私はこれを間違った方法で処理している可能性があるので、その場合は代替案を提案してください。

多くのイベントを表示するためのコレクションビューがあるとしましょう

App.EventsView = Ember.CollectionView.extend({
  contentBinding: "controller.content",
  itemViewClass: Ember.View.extend({
    templateName: "event"
  })
})

ビューのテンプレート:

<div class="event">{{ view.content.name }}</div>

そしてそれをアプリにロードします

{{#if content.isLoaded}}
  {{ view "ScheduleApp.EventsView" }}
{{else}}
  Loading...
{{/if}}

これはイベントのリストを表示するのに最適ですが、属性に応じてこれらのイベントをDOMの一部に挿入したいと思います。基本的に、これらのビューでappendToを呼び出したいのですが、保持したい残り火の魔法によって暗黙的に生成されます。これは可能ですか、それともこれらのビューを明示的に定義する必要がありますか?そうであれば、すべてをEventsControllerコンテンツと同期させるためにこれをどのように行うのでしょうか?

4

2 に答える 2

2

イベントのリストがあり、各イベントにタイプ属性があり、タイプがセミナー、コンサート、スポーツなどであると仮定します。

App.EventsControllerのコンテンツにはすべてのイベントが含まれています

App.EventsController = Ember.ArrayController.extend({
  seminars: function(){
    return this.get("content").filterProperty("type", "seminar");
  }.property("content.@each.type")
  concerts: function(){
    return this.get("content").filterProperty("type", "concerts");
  }.property("content.@each.type"),
  sports: function(){
    return this.get("content").filterProperty("type", "sports");
  }.property("content.@each.type")
})

App.BaseEventView = Ember.CollectionView.extend({
  itemViewClass: Ember.View.extend({
    templateName: 'event'
  })
})

App.SeminarsView = Ember.BaseEventView.extend({
  contentBinding: 'controller.seminars'
})

App.ConcertsView = Ember.BaseEventView.extend({
  contentBinding: 'controller.concerts'
})

App.SportsView = Ember.BaseEventView.extend({
  contentBinding: 'controller.sports'
})

App.EventsView = Ember.View.extend({templateName: 'events'});

<script type="text/x-handlebars" data-template-name="events">
  {{#if content.isLoaded}} 
    {{view App.SeminarsView}}
    {{view App.ConcertsView}}
    {{view App.SportsView}}
  {{else}}
    Loading...
  {{/if}}
</script>

Computed Propertiesのおかげで、すべてがコントローラーのコンテンツと同期するようになりました

于 2013-03-01T06:47:34.973 に答える
1

各要素に使用するビューをプログラムで設定できます。これにより、属性に基づいて dom を変更できます。

API セクションの子ビューのプログラムによる作成を確認してください。

それが役立つことを願っています。


これらを単にリストするのではなく、ページのさまざまな部分に配置しようとしている場合は、controlヘルパーを調べることをお勧めします。

その場合、DOM 内のどこでこれらが使用される可能性があるかの例について、もう少し情報を提供できますか? それらを別のコントローラーでまとめて処理した方がよいのでしょうか?

于 2013-03-01T01:51:34.843 に答える