如何在Ember中使用模型在页面之间传送一些数据?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Ember中使用模型在页面之间传送一些数据?相关的知识,希望对你有一定的参考价值。
我试图通过更新(添加)现有模型的一些属性来携带一些数据。但它没有传到下一页。所以我试着这样:
combineArray:Ember.computed(function(){
let trans = Ember.A();
let index = 0;
var that = this;
this.get('model.ccList').map(function(card,num){
let name = card.get('cardName');
let numb = card.get('cardNum');
card.get('cardtransactions').map(function(transaction){
console.log( 'transaction', JSON.stringify(transaction) )
let temp = {};
temp = JSON.parse(JSON.stringify( transaction ));
temp.cardName = name;
temp.cardNum = numb;
temp.selected = false;
temp.handlingFee = that.setHandlingFee( transaction.get('localCurrencyAmount') );
trans.push( Ember.Object.create().setProperties(temp) );
})
});
this.model.set('processedTrans', trans );
console.log( this.model.get('processedTrans').get('firstObject'));
return this.model.get('processedTrans');
}),
使用上述方法我发现,有些数据缺失了。那么在页面之间传送一些数据的正确方法是什么?
使用服务不为我设置。因为我没有页面。我希望更新具有所需数据的模型。
答案
我建议你开始考虑route
而不是页面。 Ember Route
s是一个层次结构,因此您将拥有父路线和子路线。
例如,请考虑路由器配置中的以下内容:
this.route('post', {
path: '/post/:post_id'
}, function() {
this.route('edit');
});
在这种情况下,有一个父母(post
)和一个孩子(post.edit
)。
在您的post
路线中,您将拥有:
export default Route.extend({
model(params) {
return this.store.findRecord('post', params.post_id);
}
});
对于post.edit
的路线,您将拥有:
export default Route.extend({
model(params) {
return this.modelFor('post');
}
});
所以在这里,孩子和父母使用相同的模型。如果您的子路径中需要其他内容,则可以在模型挂钩中执行此操作(同样,这是子路由):
export default Route.extend({
model(params) {
let post= this.modelFor('post');
return post.get('someOtherProperty');
}
});
在这种情况下,子模型将是父模型的someOtherProperty
属性的值。
希望这可以帮助您以不同的方式思考您的问题。
以上是关于如何在Ember中使用模型在页面之间传送一些数据?的主要内容,如果未能解决你的问题,请参考以下文章