Javascript 如何从每个循环访问Ember.js中的模型字段

Javascript 如何从每个循环访问Ember.js中的模型字段,javascript,ember.js,Javascript,Ember.js,我有下一条路线: Calendar.DateIndexRoute = Ember.Route.extend({ model: function(data) { return {arr:getCalendar(data), activeYear: data.year, activeMonthNumber: data.month, activeDay: data.day}; }, setupController: function(

我有下一条路线:

Calendar.DateIndexRoute = Ember.Route.extend({
  model: function(data) {
    return {arr:getCalendar(data),
        activeYear: data.year,
        activeMonthNumber: data.month,
        activeDay: data.day};
  },
  setupController: function(controller, model) {
    controller.set('model', model.arr);
    controller.set('activeYear', model.activeYear);
    controller.set('activeMonthNumber', model.activeMonthNumber);
    controller.set('activeDay', model.activeDay);
  }
});
arr
是数组的数组。在
index.html
中,我执行以下操作:

{{#each model}}
    <tr>
        {{#each}}
          {{#view Calendar.DateIndexView}}
            {{#if isToday}}
              <td class="today">
                {{number}}
            {{else}}
              {{#if isSelected}}
                <td class="selected">
              {{else}}
                <td class="day">
              {{/if}}
              {{number}}
            {{/if}}
            </td>
          {{/view}}
        {{/each}}
    </tr>
{{/each}}

我试图使用
{{{with}}
组件,但它不起作用。另外,我尝试使用setupController,但它没有帮助。

我解决了这个问题,如下所示:

  • 从路由中删除功能
    setupController
  • 在html更改代码中:
  • 生成的代码是

    {{#each item in model.arr}}
        <tr>
            {{#each day in item}}
              {{#if day.isToday}}
                <td class="today" {{action changeDay model.activeYear model.activeMonthNumber day.number}}>
                  {{day.number}}
              {{else}}
                {{#if day.isSelected}}
                  <td class="selected" {{action changeDay model.activeYear model.activeMonthNumber day.number}}>
                {{else}}
                  <td class="day" {{action changeDay model.activeYear model.activeMonthNumber day.number}}>
                {{/if}}
                {{day.number}}
              {{/if}}
              </td>
            {{/each}}
        </tr>
    {{/each}}
    
    {{{#model.arr}中的每个项
    {{#每天在项目}
    {{{if day.isToday}
    {{day.number}
    {{else}
    {{{#如果是一天,就当选}
    {{else}
    {{/if}
    {{day.number}
    {{/if}
    {{/每个}}
    {{/每个}}
    
    选择类时不需要if语句

    App.DayController = Em.ObjectController.extend({
      notToday = Ember.computed.not('isToday'),
      notSelected = Ember.computed.not('isSelected'),
      isSelectedClass = Ember.computed.and('isSelected', 'notToday'),
      isNotSelectedClass = Ember.computed.and('notSelected', 'notToday')
    });
    
    {{#each day in item itemController='day'}}
       <td {{bind-attr class="day.isToday:today day.isSelectedClass:selected day.isNotSelectedClass:day"}} {{action changeDay model.activeYear model.activeMonthNumber day.number}}>
         {{day.number}}
       </td>
    {{/each}}
    
    App.DayController=Em.ObjectController.extend({
    notToday=Ember.computed.not('isToday'),
    notSelected=Ember.computed.not('isSelected'),
    isSelectedClass=Ember.computed.and('isSelected','notToday'),
    isNotSelectedClass=Ember.computed.and('notSelected','notToday')
    });
    {{#每天在itemController='day'项中}
    {{day.number}
    {{/每个}}
    
    这就是您所描述的吗?如果是,它似乎工作正常。这是他的问题,你介意把它作为答案,当你在做的时候,你能展示一下bind attr是如何使用的吗?对不起,但这段代码不起作用。。。当我点击td元素时,动作不起作用。。。当我点击td元素时,我在changeDay函数的调试器参数值中查看了无错误,接下来的值是:year-undefined,month-undefined,day是天数(该参数正确通过)
    App.DayController = Em.ObjectController.extend({
      notToday = Ember.computed.not('isToday'),
      notSelected = Ember.computed.not('isSelected'),
      isSelectedClass = Ember.computed.and('isSelected', 'notToday'),
      isNotSelectedClass = Ember.computed.and('notSelected', 'notToday')
    });
    
    {{#each day in item itemController='day'}}
       <td {{bind-attr class="day.isToday:today day.isSelectedClass:selected day.isNotSelectedClass:day"}} {{action changeDay model.activeYear model.activeMonthNumber day.number}}>
         {{day.number}}
       </td>
    {{/each}}