2012-12-24 21 views
6

Tôi đang gặp sự cố khi Mô hình của tôi được tìm nạp từ máy chủ. Tôi thấy JSON chính xác được trả lại từ máy chủ trong các công cụ chrome dev nhưng mô hình không cập nhật với các giá trị trả lại.Backbone Model.fetch trả về dữ liệu nhưng không cập nhật mô hình

var listtemplate = new ListTemplateModel.Model({id: id}); 
listtemplate.fetch();

Tôi thấy dữ liệu chính xác trong các công cụ dành cho Chrome tại thời điểm này. Đây là những gì trở lại từ máy chủ:

 
{ 
    "title": "Template one", 
    "id": "template_one", 
    "steps": [ 
    { 
     "description": "I love it", 
     "id": 1, 
     "created_at": "2012-12-24T18:01:48.402Z" 
    }, 
    { 
     "description": "This is rubbish!", 
     "id": 1, 
     "created_at": "2012-12-24T18:01:48.402Z" 
    } 
    ], 
    "created_at": "2012-12-24T18:01:48.402Z" 
} 

nhưng giao diện điều khiển đăng nhập JSON cho tôi chỉ là giá trị mặc định và id đó đã được thông qua trong quá trình tạo mô hình.

console.log(listtemplate.toJSON());

và điều này trả về:

{id: "template_one", title: "", steps: Array[0]} 

Mô hình của tôi trông như thế này (tôi đang sử dụng Require.js, vì thế mà Mô hình đã được đổi tên thành ListTemplateModel trên)

 
var Model = B.Model.extend({ 
     defaults: { 
      title: '', 
      id: 0, 
      steps: [] 
     }, 
     urlRoot: 'xxx' 
    }); 

Bất kỳ ý tưởng ?

Chỉnh sửa @ Câu trả lời của Amulya đặt tôi đi đúng hướng và sau đó tôi phát hiện "sau đó". Hy vọng điều này sẽ giúp một người nào đó gặp phải sự cố tương tự:

listtemplate.fetch().then(function(){ 
    //update the view 
});
+0

@ Câu trả lời của Amulya đặt tôi đi đúng hướng và sau đó tôi phát hiện "sau đó". Hy vọng điều này sẽ giúp ai đó chạy vào cùng một vấn đề –

Trả lời

9

Lý do có thể do bạn không đợi tìm nạp xong. Hãy thử điều này:

var listtemplate = new ListTemplateModel.Model({id: id}); 
listtemplate.fetch({ 
    success: function() { 
     // fetch successfully completed 
     console.log(listtemplate.toJSON()); 
    }, 
    error: function() { 
     console.log('Failed to fetch!'); 
    } 
}); 
+0

ngọt ngào !! dường như làm điều đó. vì vậy sẽ phải có công cụ hiển thị xem của tôi trong gọi lại thành công? –

+0

có bạn đúng .. bạn nên hiển thị chế độ xem khi gọi lại thành công! –

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