无法在 `afterModel` 中更新模型
Not able to update the model in `afterModel`
在现有模型中,我试图在 afterModel
挂钩中添加一些值。但我根本没有在模型中找到。如何做到这一点?
这是我的尝试:
afterModel:function(model,transition){
var that = this;
let trans = Ember.A();
model.get('ccList').forEach(function(card,num){
let cname = card.get('cardName');
let numb = card.get('cardNum');
card.get('cardtransactions').map(function(transaction){
//adding some values
transaction.set('cardName', cname );
transaction.set('cardNum', numb );
transaction.set('selected', false );
transaction.set('handlingFee', "" );
trans.push( transaction );
});
});
model.set('processedTrans',trans); //assigning back
console.log( JSON.stringify( model.get('processedTrans').get('firstObject'))); //but not getting here
},
从路由的模型挂钩返回的 model
对象通常是原始对象,.get()
或 .set()
将引发错误。如评论中所述,安全选项是使用 Ember.get()
或 Ember.set()
,因为它们将同时支持基本对象和 Ember 对象。
/* Ember.get(model, key) provides a safe fallback if .get() is not available */
console.log(Ember.get(model, 'transactions'));
/* model.get(key) will throw an error */
console.log(model.get('transactions'));
此外,使用 Ember.assign(model, { transactions, ...otherObjects })
可以帮助简化在 afterModel
或 setupController
挂钩中修改模型。
这是一个粗略的 EmberTwiddle 来说明:Modifying the Model in the AfterModel Hook
在现有模型中,我试图在 afterModel
挂钩中添加一些值。但我根本没有在模型中找到。如何做到这一点?
这是我的尝试:
afterModel:function(model,transition){
var that = this;
let trans = Ember.A();
model.get('ccList').forEach(function(card,num){
let cname = card.get('cardName');
let numb = card.get('cardNum');
card.get('cardtransactions').map(function(transaction){
//adding some values
transaction.set('cardName', cname );
transaction.set('cardNum', numb );
transaction.set('selected', false );
transaction.set('handlingFee', "" );
trans.push( transaction );
});
});
model.set('processedTrans',trans); //assigning back
console.log( JSON.stringify( model.get('processedTrans').get('firstObject'))); //but not getting here
},
从路由的模型挂钩返回的 model
对象通常是原始对象,.get()
或 .set()
将引发错误。如评论中所述,安全选项是使用 Ember.get()
或 Ember.set()
,因为它们将同时支持基本对象和 Ember 对象。
/* Ember.get(model, key) provides a safe fallback if .get() is not available */
console.log(Ember.get(model, 'transactions'));
/* model.get(key) will throw an error */
console.log(model.get('transactions'));
此外,使用 Ember.assign(model, { transactions, ...otherObjects })
可以帮助简化在 afterModel
或 setupController
挂钩中修改模型。
这是一个粗略的 EmberTwiddle 来说明:Modifying the Model in the AfterModel Hook