2013-02-20 32 views
6

Ngay bây giờ, chúng tôi đang xây dựng liên kết của chúng tôi như thế:Làm cách nào để tạo liên kết mà không cần tải trước mô hình?

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

Đó tạo ra một liên kết mà trông giống như /comments/45.

Thật không may, điều đó chỉ hoạt động khi chúng tôi tải trước nhận xét - mặc dù chúng tôi đã có ID nhận xét. Có thể không tải trước nhận xét không?

Cái gì đó có thể trông giống như:

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

Trả lời

2

câu hỏi thực tế là gì đây? Điều này không rõ ràng với tôi.

Vì vậy, xử lý hành động hiện tại của bạn trông như thế này:

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

Bây giờ giải pháp mong muốn của bạn có thể trông như thế này:

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

Và xử lý tương ứng:

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 
} 

Would công việc này trong trường hợp của bạn? Hay bạn có ý định gì khác?


UPDATE: OP muốn có tất cả các dữ liệu Xử lý ở các tuyến đường Route của bạn nên xử lý các hành động "showCommentById" mà tôi đã đề nghị trước đây:

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); 
     } 
    } 
}); 

Vì vậy, thực sự bạn được tự do để quyết định nơi xử lý các hành động trong ứng dụng của bạn.

+0

Công trình này, NHƯNG! Chúng tôi muốn tiếp tục tải dữ liệu (gọi hàm tìm kiếm trên các mô hình) trong tuyến đường của bộ định tuyến của chúng tôi. Đặc biệt trong api router mới, việc tải các mô hình trong một tuyến đường được giải quyết rất đẹp, vì vậy tôi không chắc liệu đó có phải là phương pháp hay nhất hay không, để thực hiện điều này trong "điều hướng-chức năng" của chúng tôi. – kraftwer1

+1

Nhưng bạn có thể dễ dàng ủy quyền cuộc gọi đó đến tuyến đường của bạn? Bạn có thể đặt một fiddle? Sau đó, tôi có thể hiểu cấu trúc Ứng dụng hiện tại của bạn. – mavilein

+0

Tôi đã cố gắng đặt một ví dụ đơn giản về fiddle http://jsfiddle.net/AhgBh/. Nó sẽ không hoạt động, nhưng nó cho thấy nhiều hơn một chút trước cấu trúc của chúng ta. Chào mừng bạn cho đầu vào! – kraftwer1

Các vấn đề liên quan