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