什麼是真正的問題在這裏?這個我不太清楚。
所以你當前的操作處理程序是這樣的:
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);
}
}
});
所以實際上你是自由的決定在您的應用中處理動作的位置。
這工作,但!我們希望在路由器的路由中保持加載數據(在模型上調用查找功能)。特別是在新的路由器api中,路由中的模型加載解決得非常好,所以我不確定是否是最佳實踐,在我們的「導航函數」(如showComment)中執行此操作,正如您所建議的那樣。 – kraftwer1 2013-02-25 10:36:28
但你很容易將該呼叫委託給你的路線?你能拿起小提琴嗎?然後我可以理解你當前的應用程序結構。 – mavilein 2013-02-25 10:42:32
我試圖把一個簡單的例子在小提琴http://jsfiddle.net/AhgBh/。它不會工作,但它表明我們的結構更加精細一點。歡迎參加! – kraftwer1 2013-02-28 16:57:53