Ember.js 在ArrayController中扩展模型属性

Ember.js 在ArrayController中扩展模型属性,ember.js,ember-data,Ember.js,Ember Data,我有一个列有一组活动的ArrayControllerActivitiesController。模型活动定义了所有的长期运行状态,但我希望在控制器中保持浏览器状态。特别是在显示活动时,我希望有一个切换开关showDetails,指示是否为每个活动提供摘要或详细视图 使用计算属性执行此操作非常简单。例如,这项工作: duration: function() { if (!this.get('start_time') || !this.get('end_time')) { return false

我有一个列有一组活动的ArrayController
ActivitiesController
。模型
活动
定义了所有的长期运行状态,但我希望在控制器中保持浏览器状态。特别是在显示活动时,我希望有一个切换开关
showDetails
,指示是否为每个活动提供摘要或详细视图

使用计算属性执行此操作非常简单。例如,这项工作:

duration: function() {
  if (!this.get('start_time') || !this.get('end_time')) { return false; }
  return moment(
  this.get('end_time'),"YYYY-MM-DD HH:mm:ss")
      .diff(moment(this.get('start_time'),"YYYY-MM-DD HH:mm:ss"),"minutes");
}.property('start_time', 'end_time')
但我想知道的是,如何添加一个简单的属性,例如:

showDetails : false // where "false" is just the initialised state of course

这似乎将此属性附加到所有数组元素上,而不是基于每个属性。对不起,如果这是一个非常基本的问题,但是我的头因为撞到墙上而累了

我想您可以在
活动控制器上使用
项目控制器
。以最简单的形式,如:

App.ActivitiesController = Ember.ArrayController.extend({
    itemController: 'activity'
});
使用
ActivityController

App.ActivityController = Ember.ObjectController.extend({
    showDetails: false
});

因此,
ActivitiesController
中的所有模型都将被一个
ActivityController
包装,在这里您可以拥有“非持久性”属性,如
showDetails
或任何您想要的属性。

如果我没弄错,您想在每个型号的
活动
上都有一个
showDetails
属性吗?@inuitivepixel是的