2013-08-03 54 views
6

Tôi có một con đường như thế này:Làm thế nào để cập nhật mô hình Ember.Route động?

App.PeopleRoute = Ember.Route.extend({ 
    model: function() 
    { 
    return App.Persons.find(personId); 
    } 
}); 

nơi PersonId được nạp asynchronically và là một biến JavaScript bình thường bên ngoài Ember. Bây giờ khi route được hiển thị, nó sẽ nhận được PersonId hiện tại và hiển thị dữ liệu thích hợp. Nhưng khi tôi thay đổi giá trị của personId nó không cập nhật xem.

Vì vậy, câu hỏi của tôi là cách để làm mới tuyến đường này để tìm hồ sơ với personId mới là gì?

+0

Tôi có thể tìm cách để làm điều này nhưng trước khi tôi làm, bạn có thể cho tôi biết lý do bạn muốn làm điều này không? Bạn có thể đang cố gắng làm điều gì đó sẽ dễ dàng hơn trong Ember.js. –

+0

@tarasm là đúng, nếu bạn thấy mình chống lại khuôn khổ để làm những gì nó không ra khỏi hộp sau đó bạn nên suy nghĩ lại cách tiếp cận của bạn, bởi vì chắc chắn có một cách tốt hơn để đạt được những gì bạn cần. Hãy thử mô tả trường hợp sử dụng của bạn chi tiết hơn và tôi chắc chắn chúng tôi có thể giúp bạn ... – intuitivepixel

Trả lời

2

Điều này là do móc model chỉ được thực thi khi được nhập qua URL cho các tuyến đường có phân đoạn động. Đọc thêm về nó here.

Giải pháp dễ nhất cho việc này là sử dụng transitionTo.

App.PeopleRoute = Ember.Route.extend({ 
    model: function(params) 
    { 
    return App.Persons.find(params.personId); 
    }, 
    actions: { 
    personChanged: function(person){ 
     this.transitionTo("people", person); 
    } 
    } 
}); 

App.PeopleController = Em.Controller.extend({ 
    observeID: function(){ 
    this.send("personChanged"); 
    }.observes("model.id"); 
}); 
+0

Tôi đã thử giải pháp này nhưng điều này sẽ không hoạt động. Quá trình chuyển đổi diễn ra nhưng mô hình vẫn giữ nguyên. –

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