2014-01-31 5 views
0

У меня есть объект модели Backbone, который я успешно сохраняю. Однако ответ от сервера после того, как объект будет сохранен еще один объект (не тот же объект, который я храню (не мое решение, это система, мне приходится иметь дело с)):Магистральная модель после успешного сохранения

var userActivity = new UserActivity(); 

...some other logic here... 

userActivity.save(null, { 
    wait: true, 
    success: function(model, response, options) { 
     dataLoader.getCachedObject(
      function(cachedObject) { 
       // I want to update cachedObject object with new data coming back from the server, in a way that my views get updated on change event. 
      }); 
     }, 
     error: function(model, xhr, options){ 
    } 
}); 

Я хочу обновить cachedObject объект с новыми данными, возвращающимися с сервера, таким образом, чтобы мои представления обновлялись в событии изменения.

Как это сделать? Позвонить ли я?

cachedObject.parse(response) 

Любая помощь очень ценится.

ответ

0

Если я правильно вас понимаю, каждый раз, когда ваша модель успешно синхронизируется с сервером, вы хотите обновить атрибуты на стороне клиента данными, поступающими с сервера, верно? Вы должны быть в состоянии сделать это с чем-то вроде этого:

В модели:

initialize: function(){ 
    this.on("sync", function(model, response, options){ 
    this.set(response.newData); 
    } 
} 

Конечно, изменить newData ключ на любой объект, который используется сервером для возврата DAT вы хотите ...

Теперь, каждый раз, когда модель успешно синхронизируется с сервером, она будет устанавливать свои атрибуты на то, что возвращается сервером, что вызовет событие «изменения».

В вашей точки зрения, вы можете иметь

initialize: function(){ 
    this.listenTo(model, "change", this.render); 
} 

и вид Wil засавить себе каждый раз, когда эти модели изменения (которые будут происходить после каждого сохранения на сервере).

+0

Спасибо, это отличная идея. У меня было много вложенных данных, которые мне пришлось вручную разобрать ... поэтому мне пришлось вызвать this.set (this.parse (response)); – iririr

Смежные вопросы