有没有办法将params对象传递给linTo或action helper?
我有一个对象,它需要复合键。我正在使用Ember Model并且必须修改适配器。在获取初始对象的路由器中,我使用必要的密钥传递params对象。当使用linkTo或者使用transitionToRoute时,我的问题是尝试做同样的事情。就我所知,它都没有再次击中路由器。
我回到这个问题。我仍然不确定处理这个问题的正确方法。
App.Router.map(function () {
this.resource("clients", { path: 'clients' }, function () {
this.resource("client", { path: ':client_id' }, function () {
this.resource("claims", function () {
this.resource('claim', { path: ':claim_id/:claim_sub' }, function () {
this.resource('lines', { path: 'lines' }, function () {
this.resource('line', { path: ':line_id' }, function () {
this.resource('flags', function () {
this.resource('flag', { path: ':flag_id' });
});
});
this.route('claim_lines');
});
});
});
});
});
this.route("errors", { path: '/errors/:error_id' });
});
当我链接到索赔下的任何内容时,复合slu are,我将那些设置为未定义。
更新
序列化正是我所需要的。
App.ClaimRoute = Nucleus.Route.extend({
model: function (params) {
params.client_id = this.modelFor('client').get('client_id');
return App.Claim.find('claim', params);
},
serialize: function (model) {
return { claim_id: model.get('cla_seq'), claim_sub: model.get('cla_sub') };
}
});
答案 0 :(得分:4)
我认为代码示例最有帮助,但是为了尝试回答您的问题,是的,您可以使用以下内容将对象传递给linkTo
:
{{#linkTo routename params}}Text for Link{{/linkTo}}
然后,对于与路由名称匹配的路由代码,您可以在定义serialize函数时将params作为参数,并使用它们构建URL以匹配路由器中定义的路由段:
serialize: function(params) {
// params.property1 and params.property2
return { segment_1: params.property1, segment_2: params.property2 };
}