1

有没有办法将 params 对象传递给 linTo 或动作助手?

我有一个对象,它需要复合键。我正在使用 Ember 模型并且不得不修改适配器。在获取初始对象的路由器中,我传递了一个带有必要键的 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' });
});

当我链接到索赔下的任何内容时,复合蛞蝓在哪里,我将它们设置为未定义。

更新

序列化正是我所需要的。

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') };
  }
});
4

1 回答 1

4

我认为一个代码示例将是最有帮助的,但要尝试回答您的问题,是的,您可以将对象传递给linkTo类似以下内容:

{{#linkTo routename params}}Text for Link{{/linkTo}}

那么对于匹配路由名称的路由代码,你可以在定义serialize函数时将params作为参数,使用它们来构建URL来匹配你的router中定义的路由段:

  serialize: function(params) {
    // params.property1 and params.property2
    return { segment_1: params.property1, segment_2: params.property2 };
  }
于 2013-05-23T23:23:26.190 回答