在ArrayController中扩展模型属性

时间:2013-08-09 09:43:55

标签: ember.js ember-data

我有一个ArrayController ActivitiesController,列出了一组活动。模型Activity定义了所有长时间运行状态,但我希望在控制器中保持浏览器状态。特别是在显示活动时,我希望有一个切换开关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

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

1 个答案:

答案 0 :(得分:0)

我想你可以在itemController上使用ActivitiesController。最简单的形式,如:

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

ActivityController

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

所以ActivitiesController中的所有模型都将包裹并带有ActivityController,您可以拥有'非持久'属性,例如{{1或者你想要的任何东西。