Ember.js将params对象传递给linkTo或action helper

时间:2013-05-23 20:33:39

标签: ember.js

有没有办法将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') };
  }
});

1 个答案:

答案 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 };
  }