Ember.js:基于设备中的所有元素设置计算属性

Ember.js:基于设备中的所有元素设置计算属性,ember.js,ember-data,Ember.js,Ember Data,我正在构建一个简单的数据可视化,显示基于记录总数的设备类型的份额。我想知道是否有一种方法可以基于夹具中的所有元素计算属性 App.Devices = DS.Model.extend({ label: DS.attr('string'), measure: DS.attr('number'), share: function() { //code to return measure / fixtureTotal }.property('measure

我正在构建一个简单的数据可视化,显示基于记录总数的设备类型的份额。我想知道是否有一种方法可以基于夹具中的所有元素计算属性

App.Devices = DS.Model.extend({
    label: DS.attr('string'),
    measure: DS.attr('number'),
    share: function() {
        //code to return measure / fixtureTotal
    }.property('measure')
});


App.Devices.FIXTURES = [
    { id: "0", label: "Computer", measure: 10 },
    { id: "1", label: "Mobile",   measure: 20 },
    { id: "2", label: "Tablet",   measure: 30 }
]                                 //  fixtureTotal = 60
因此,在这种情况下,“计算机”将占总记录的(10/60)份额

这可以通过计算属性来实现,还是需要另一种解决方案?理想情况下,此解决方案将与FixtureAdapter或RestarAdapter一起使用


谢谢

似乎与我在todomvc.com上看到的相似:

假设您有一个显示所有设备的ArrayController,下面是我将尝试的:

  • 在ArrayController上为计算总数的设备创建计算属性,该属性取决于
    @each.measure
  • (意味着设备将由指向其自身ObjectController的子视图显示)向声明子控制器添加
    需要:['devices']
    ,以指示此控制器依赖于设备控制器
  • 在设备控制器上创建计算共享的计算属性,该属性取决于
    measure
    controllers.devices.total
然后,在设备控制器上的share()属性函数中,您可以使用
this.get('controllers.devices')
获取对父控制器实例的引用,或者甚至可以使用
this.get('controllers.devices.total')
直接获取total属性的值


我最初是以“我自己还没有尝试过”开始回答的,但因为我也想看看这是否可行,这里有一个JSBin,其中包含工作代码:(经过编辑,使其能够与REST适配器一起工作)

注意,这假设了Ember.js 1.0.0-rc2和我几天前创建的一个Ember数据构建(目前还没有正式发布);API与我使用以前版本看到的一些答案/示例相比有一些变化