【问题标题】:Ember.js wizard controlEmber.js 向导控件
【发布时间】:2013-02-05 07:00:38
【问题描述】:

我有一个带有多个步骤的 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。

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

谁能提出更好的方法?

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    您不必在路径中使用 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-08
      • 2010-10-08
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      • 2014-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多