2013-02-20 81 views
6

眼下,我們正在建設我們的鏈接,這樣的:如何在沒有預加載模型的情況下建立鏈接?

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

這產生一個鏈接,看起來像/comments/45

不幸的是,這隻有在我們預先加載評論時纔有效 - 儘管我們已經有了評論的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 2013-02-25 10:36:28

+1

但你很容易將該呼叫委託給你的路線?你能拿起小提琴嗎?然後我可以理解你當前的應用程序結構。 – mavilein 2013-02-25 10:42:32

+0

我試圖把一個簡單的例子在小提琴http://jsfiddle.net/AhgBh/。它不會工作,但它表明我們的結構更加精細一點。歡迎參加! – kraftwer1 2013-02-28 16:57:53

相關問題