3

私は残り火が初めてで、かなり単純なタスクであるべきことを達成する方法に本当に苦労しています。

履歴書を ember アプリに入れようとしています。履歴書の一部として、いくつかの参照があります。

誰かがナビゲーションで「参照」リンクをクリックすると、各参照へのリンクと、リンクの子として表示される最初の参照を表示したいと思います。

どうやら、ここでの私のオプションは、「references/1」URLにリダイレクトするか(実際には理想的ではありません)、「reference」テンプレートを表示することです。

このために JSFiddle を作成しますが、すでにそこにあるものを読み込んだり表示したりできないため、jsfiddle が壊れているようです。

私はこれを通常のルートで動作させ、参照をロードするとリンクが表示され、リンクをクリックするか、「references/2」URLでページを直接ロードすると、正しいコンテンツが表示されます。

を使用してリダイレクトする場合

App.ReferencesRoute = Ember.Route.extend({
    モデル: 関数(){
        App.References.find(); を返します。
    }、
    リダイレクト: 関数(){
        this.transitionTo('参照',App.References.find(1));
    }

});

URL は正しくリダイレ​​クトされますが、参照へのリンクが取得できません。「参照」テンプレートは読み込まれますが、モデルが渡されません。を使用してみましthis.modelFor('references').get('firstObject')たが、何も返されません。そのため、を使用していfind(1)ます。

このようなレンダーテンプレートとコントローラーでこれをやろうとすると

App.ReferencesRoute = Ember.Route.extend({
    モデル: 関数(){
        App.References.find(); を返します。
    }、
    renderTemplate: 関数(){
        this.render();
        this.render('reference',{into:'references',controller:'reference'});

    }
});

App.ReferenceController = Ember.ObjectController.extend({
    手紙:「テストレター」
});

リンクと「テストレター」メッセージを受け取りましたが、他にもいくつか問題が発生しました。

1) ユーザーが '/references/1' URL にいた場合と同じものを実際に返すように、参照コントローラーに最初のモデルを渡す方法がわかりません。

2) リンクをクリックすると、選択した文字が表示されません。つまり、コントローラーを使用するとリンクが機能しません。

3) すでに表示されている文字であるため、最初のリンクをアクティブにしたいと思いますが、それは他の問題に比べて些細なことです。

私はこれについて完全に間違っていますか?私が見逃している大きなものはありますか?

4

1 に答える 1

1

リダイレクト経由でモデルを渡すには、次のようなものを使用します。

App.ReferencesIndexRoute = Ember.Route.extend({
   model    : function(){
       return App.References.find();
   },
   redirect : function(){
      var model = this.controllerFor('references').get('model');
      this.transitionTo('reference', model);
   }
});
于 2013-04-14T04:39:14.667 に答える