簡體   English   中英

如何從每個循環訪問Ember.js中的模型字段

[英]How to access field of model in Ember.js from each loop

我有下一條路線:

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}}

但是我需要在每個循環中訪問activeYearactiveMonth字段:

{{#each model}}
    <tr>
        {{#each}}
        access fields activeYear and activeMonth here
        {{/each}}
    </tr>
{{/each}}

我嘗試使用{{with}}組件,但無法正常工作。 另外,我嘗試使用setupController,但沒有幫助。

我解決了這個問題,如下所示:

  1. 從路由中刪除了功能setupController
  2. 在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}}

您的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}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM