-1

私はEmberData(Railsを利用)を備えたシンプルなEmberアプリを持っています。私はこれらのルートを作成しました:

App.Router.map(function () {
    this.resource('bands', function () {
        this.route('new');
        this.resource('band', {path: ':band_id'}, function() {
            this.route('edit');
        });
    });
});

次に、に移動するとhttp://localhost:3000/#/bands/23/edit、次のようにID23のオブジェクトの値が表示されます。

<div>name: {{name}}</div>
{{! should output "name: Pavel" }}

ただし、そのコードをに入れるとband/edit.hbs、アプリケーションは「name:」のみを表示し、値は表示されません。コンテンツが内部ビューに渡されないためだとわかりました。同じコードを直接に配置するとband.hbs、すべてが期待どおりに機能します。どこでミスをしているの?コンテンツオブジェクトをコントローラーに渡すにはどうすればよいですか?(可能であれば、できるだけ多くのコントローラーを生成したいと思います)。

4

2 に答える 2

1

少なくともBandEditのルートを定義する必要があります。

App.BandEditRoute = Ember.Route.extend({
  model: function(params) {
    return this.modelFor('band'));
  }
});

必要に応じて、モデルを返す前に、いつでもモデルをトランザクションに追加できます。

BandEdit Controller内からparentControllerを参照することによってこれを行うこともできますが、これを解決するためのエレガントな方法ではないようです。

于 2013-02-10T17:46:44.837 に答える
1

これcontextは、が内部ビューによって変更されたためです(コンテキストはビュー自体になります)BandEditControllerが、ビューはとそれに関連するモデルにアクセスできるため、常に最初のモデルを参照するmodelと、Emberはあなたが何を求めているかを認識します。 :{{model.name}}/ {{model.genre}}

JSFiddleを参照してください:http://jsfiddle.net/JZ84L/

(アンドレの答えと組み合わせて使用​​します。なぜなら、を通過していない場合はmodel使用できないからoutletです。)

于 2013-02-10T17:49:06.657 に答える