我尝试在每个循环中更新模型中的每个对象
我想将size
属性添加到模型中的每个对象。
但似乎没有用。
self.model().get(i).size=123
>> 123
self.model().get(i)
>>
id: 1
name: "URL_Command_Comparison"
rounds: 2
team: "cvt"
__proto__: Object
model: function(){
return Ember.A([
{id: 1, name: 'URL_Command_Comparison',
team: 'cvt'
},
{id: 2, name: 'Auto Test',
'manualHours':20 ,'autoHours': 3,
....
$.each(this.model(),function(i,d){
self.model().get(i).set("size",self.perRoundROI(d)*d.rounds*d.coverage)
});
答案 0 :(得分:2)
首先,你可能永远不应该调用模型钩子(this.model()
)。当路由器构建当前URL /转换的上下文时,它会被路由器调用。如果要在转换完成后从路径访问模型,可以使用this.currentModel
。如果要在转换管道中的其他位置访问它,通常会将其传递到公共挂钩(afterModel
,setupController
)。 http://emberjs.com/api/classes/Ember.Route.html#method_afterModel如果您想从更深层次的嵌套路线访问它,可以使用this.modelFor('foo')
,其中foo
是其他路线的名称。
在您的特定情况下,我将您的对象包装在Ember对象中,并创建一个计算属性,为您计算。很酷的是,如果你改变计算属性所依赖的任何其他属性,它将重新计算。
App.CoolObject = Em.Object.extend({
size: function(){
return this.get('rounds') * this.get('coverage'); // or whatever it is you want here
}.property('rounds', 'coverage')
});
model: function(){
return Ember.A([
{id: 1, name: 'URL_Command_Comparison',
team: 'cvt'
},
{id: 2, name: 'Auto Test',
'manualHours':20 ,'autoHours': 3,
}]);
},
setupController: function(controller, model){
model = model.map(function(item){
return App.CoolObject.create(item);
});
this._super(controller, model);
}