2013-02-20 12 views
6

は今のところ、我々はそのような私たちのリンクを構築しています。モデルをプリロードせずにリンクを作成するにはどうすればよいですか?</p> <pre><code><a {{action showComment comment href=true}}>Show</a> </code></pre> <p><code>/comments/45</code>のように見えるのリンクを生成します。

残念ながら、コメントはあらかじめ読み込んでいる場合にのみ動作します。コメントのIDは既に持っていますがコメントをプリロードせずに可能ですか?以下のように見えるかもしれません

何か:

<a {{action showComment comment_id href=true}}>Show</a> 

答えて

2

ここで、実際の問題とは何ですか?これは私には明らかではありません。

だからあなたの現在のアクションハンドラは次のようになります。今

showComment : function(comment){ 
    //do your stuff with the model 
} 

ご希望のソリューションは、次のようになります。

<a {{action showCommentById comment_id href=true}}>Show</a> 

と、対応するハンドラ:

showCommentById : function(commentId){ 
    var comment = App.Comment.findById(commentId); // i assume you have this retrieval method or something like it 
    this.showComment(comment); 
}, 
showComment : function(comment){ 
    //do your stuff with the model 
} 

でしょうがあなたのケースでこの作品ですか?あなたは他に何かをしましたか?


UPDATE:OPが望むすべてのデータはあなたのルートは、私が前に提案したアクション「showCommentById」を扱う必要があるルートで の取り扱いがあります。

App.ArticlesRoute = Ember.Route.extend({ 
    events : { 
     showCommentById : function(commentId){ 
      var comment = App.Comment.findByIds(commentId); // i assume you have this retrieval 
      this.transitionTo("root.articles.comment", comment); 
     } 
    } 
}); 

だから、実際にあなたは自由ですアプリ内のアクションをどこで処理するかを決定します。

+0

これは機能しますが、しかし!私たちは、ルーターのルートにデータのロード(モデルで関数を呼び出す)を保つ必要があります。特に新しいルータのAPIでは、ルート内のモデルの読み込みは非常にうまくいきますので、あなたが提案したように(showCommentのような) "ナビゲート関数"でこれを行うのがベストプラクティスかどうかはわかりません。 – kraftwer1

+1

あなたはその通話をあなたのルートに簡単に委任しますか?あなたはフィドルを置くことができますか?それから私はあなたの現在のAppの構造を理解することができます。 – mavilein

+0

私は単純な例をフィドルhttp://jsfiddle.net/AhgBh/に入れようとしました。それはうまくいきませんが、それは私たちの構造をもう少し精密に示しています。入力を歓迎します! – kraftwer1

関連する問題