3

我有一个带有多个步骤的 ember.js 向导控件。

ember 模型对象在向导的每个阶段都设置了各种属性。

我可以看到更改视图的唯一方法是使用 linkTo 帮助器,如下所示:

{{#linkTo steps.two model}}Step 2{{/linkTo}}

但这对我没有好处,因为我需要链接到的每个步骤都是动态路线:

@resource "steps", ->
  @route "one", {path: 'one/:model_id'}
  @route "one", {path: 'two/:model_id'}
  #etc.

动态路径不好,因为模型要到向导结束才会保存。如果我尝试使用 transitionTo 来传递模型,那么 url 显然会搞砸,因为它正在模型上调用 tostring。

我更喜欢使用渲染助手之类的东西,它在渲染内容时保留上下文,但我认为不可能以这种方式替换整个视图。

任何人都可以提出更好的方法吗?

4

1 回答 1

6

您不必在路径中使用 model_id。您只需要覆盖路由中的模型属性。一个基本的应该是:

@resource "steps", ->
  @route "one", {path: 'one'}
  @route "two", {path: 'two'}


Redbot.StepsRoute = Ember.Route.extend({
  model: function() {
    return App.User.createRecord({});
  }
});

Redbot.StepsOneRoute = Ember.Route.extend({
  model: function() {
    return this.modelFor('steps');
  }
});

Redbot.StepsTwoRoute = Ember.Route.extend({
  model: function() {
    return this.modelFor('steps');
  }
});

每个子路由只使用父路由中定义的模型。

ember 默认所做的只是使用 model_id 参数设置模型,因此覆盖模型使您可以控制该功能。

于 2013-02-05T14:38:28.260 回答