0

我对模板、视图和模型之间的关系感到困惑。

我知道视图的主要作用之一是将原始事件转换为语义事件,但我不清楚我应该如何为视图提供必要的数据。

我有一个 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视图是否应该有它自己的关联实例 a ,提供对相应对象CalendarDayController的代理访问?CalendarDay如果是这样,那不是需要多个实例CalendarDayController吗?(我的理解是控制器是单例的——每种类型只应该存在一个。)

非常感谢任何建议。

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 回答