0

テンプレート、ビュー、モデルの関係について混乱しています。

ビューの主な役割の 1 つはプリミティブ イベントをセマンティック イベントに変換することだと理解していますが、必要なデータをビューに提供する方法がよくわかりません。

calendar_month テンプレートがあります。関連付けられCalendarMonthたオブジェクトにはオブジェクトの配列がありCalendarWeek、各オブジェクトにはCalendarDayオブジェクトの配列があります。(これらは持続しないため、モデルではありません。オブジェクトであり、 で生成されますCalendarMonthRoute)。

したがって、私のテンプレートは次のようになります。

<table>
  {{#each week in weeks}}
    <tr>
      {{#each day in week.days}}
        <td>
          {{#view App.CalendarDayView}}
            {{ day.monthDay }}
          {{/view}}
        </td>
      {{/each}}
    </tr>
  {{/each}}
</table>

各 がクリックに応答するようにしたいのですが、CalendarDayView対応する各 に関連付ける必要がある特定の暦日オブジェクトにアクセスする方法がわかりませんCalendarDayView

App.CalendarDayView = Ember.View.extend({
  click: function(evt) {
    // do something here... but how do I know which day was clicked?
  }
});

私はこれを適切に設定していない可能性が高いと思います。各ビューには、対応するオブジェクトへのプロキシ アクセスを提供するCalendarDayの独自の関連付けられたインスタンスが必要ですか? もしそうなら、それはの複数のインスタンスを必要としませんか? (私の理解では、コントローラーはシングルトンです。各タイプの 1 つだけが存在する必要があります。)CalendarDayControllerCalendarDayCalendarDayController

アドバイスをいただければ幸いです。

4

1 に答える 1

1

これは、コンテキスト オブジェクトをハンドラー メソッドに簡単に渡すことができるアクション ヘルパーを使用することで簡単に実現できます。

<table>
  {{#each week in weeks}}
    <tr>
      {{#each day in week.days}}
        <td>
          {{#view App.CalendarDayView}}
            <a {{action yourAction day target="view"> {{ day.monthDay }} </a>
          {{/view}}
        </td>
      {{/each}}
    </tr>
  {{/each}}
</table>

対応するビュー:

Vollipop.CalendarDayView = Ember.View.extend({
  yourAction : function(day){
    // perform your work on the day
  }
});
于 2013-03-12T21:21:48.130 に答える