2013-02-21 24 views
10

Vì đây là commit, chúng tôi không thể đăng ký chế độ xem có ID hai lần. Điều này có vẻ hợp lý. Tuy nhiên tôi có một vấn đề.Đã cố gắng đăng ký chế độ xem có id đã được sử dụng

Router

App.Router.map(function() { 
    this.resource('contact', { path: '/contacts/:contact_id' }); 
}); 

App.ContactShowRoute = Ember.Route.extend({}); 

Xem

App.ContactShowView = Em.View.extend({ 
    elementId: "page-show-contact" 
}); 

Hãy xem xét rằng tôi đã có trên con đường App.ContactShowRoute. Tôi muốn chuyển đổi thành() cùng một tuyến đường nhưng với ngữ cảnh khác.

tôi mong đợi emberjs để tiêu diệt các quan điểm và sau đó tạo ra nó một lần nữa, nhưng tôi đã nhận được lỗi sau:

Uncaught Error: assertion failed: Attempted to register a view with an id already in use: page-show-contact 

Tôi không muốn để nhanh chóng một cái nhìn với cùng một ID hai lần. Tôi chỉ muốn ember phá hủy một thực tế và sau đó tạo ra một cái mới.

+0

Tôi đoán Ember trys để nhanh chóng View mới, khi người già Xem vẫn đang trong DOM và vẫn đăng ký với Ember. Bây giờ, Chế độ xem mới mới của bạn được tạo và phần tử elementId được gán. Tại thời điểm này, bạn có 2 Xem các đối tượng có cùng id nhưng chỉ một đối tượng trong DOM. Tại sao bạn cần tự định nghĩa elementId? Tôi nghĩ rằng có một cách giải quyết nhanh. – mavilein

Trả lời

3

Dường như có lỗi trong phiên bản hiện tại. Có lẽ bạn nên mở một vé. Cho đến này là cố định, điều này có thể giúp:

App.ContactShowRoute = Ember.Route.extend({ 

    renderTemplate : function(controller, model) { 
    if(this.lastRenderedTemplate == this.routeName) 
     return; 
    return this._super(); 
    } 
}); 
+0

LastRenderedTemplate là gì? nó là một phần của API? – testndtv

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