3

いくつかのステップを持つ ember.js ウィザード コントロールがあります。

Ember モデル オブジェクトには、ウィザードの各段階で設定されるさまざまなプロパティがあります。

ビューを変更する唯一の方法は、次のように linkTo ヘルパーを使用することです。

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

しかし、linkTo する各ステップを動的ルートにする必要があるため、これは私にとっては良くありません。

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

ウィザードの最後までモデルが保存されないため、動的ルートは適切ではありません。モデルを渡すために transitionTo を使用しようとすると、モデルで tostring を呼び出しているため、明らかに URL が台無しになります。

コンテンツをレンダリングするときにコンテキストを保持するレンダリング ヘルパーのようなものを使用したいと思いますが、この方法でビュー全体を置き換えることはできないと思います。

誰でもより良いアプローチを提案できますか?

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 に答える