2015-03-30 5 views
2
//Route 
url: "https://xxxxxx.com/api/entries", 
users: "https://xxxxxx.com/api/users/", 
model: function(){ 
    var localData = JSON.parse(localStorage.getItem("user")); 
    var data = { auth_token: localData.user_token }; 
    return new Ember.RSVP.hash({ 
     logs: Ember.$.ajax({ url: this.get('url'), headers: { "X-Api-Token": data.auth_token } }), 
     team: Ember.$.ajax({ url: this.get('users'), headers: { "X-Api-Token": data.auth_token } }) 
    }); 
} 


//controller 
actions:{ 
    deleteWorklog: function(worklogId){ 
      var model = this.get('model.logs'); 
      var data = { auth_token: this.get('local_data').user_token }; 
      Ember.$.ajax({ 
       method: "DELETE", 
       url: this.get('url') + "/" + worklogId, 
       headers: { 'X-Api-Token': data.auth_token } 
      }).then(function(data){ 
      //how do i do it? 
      }) 
    }, 
    loadMore: function(){ 
     var model = this.get('model.logs'); 
     var url = this.get('url'); 
     var today = new Date(); 
     today.setDate(today.getDate() - this.get('from')); 
     console.log(today); 

     url += "?from="+ today.toISOString(); 

     Ember.$.ajax({ 
      url: url, 
      headers: { "X-Api-Token": data.auth_token } 
     }).then(function(data) { 
      model.replace(0, model.length, data); 
     }); 

     var initial = this.get('from') + 10; 
     this.set('from', initial); 
    } 
} 
} 

Я заблокирован после запроса, мне нужно обновить мою модель, но я должен сделать cmd + R, чтобы увидеть изменение, есть ли метод, вызвать модель или что-то в этом роде?Как обновить модель после запроса API

Я добавил еще things возможно help

+0

Что вы думаете о модели? – albertjan

+0

Вы используете Ember-Data? – GJK

+0

Я не использую Ember-Data, просто у меня есть свой маршрут с просьбой АНИ 'вернуть новый Ember.RSVP.hash ({ \t \t \t \t журналы:.. Ember $ Ajax ({URL: this.get ('URL '), заголовки: {"X-Api-Token": data.auth_token}, введите:' GET '}), )} 'просто я делаю это @GJK @albertjan – Rojke

ответ

1

Есть два способа, о которых я могу думать. Первый - это просто позвонить по маршруту refresh method. Это, безусловно, самое простое. Просто позвоните, и Эмбер повторно вызовет крючок model для этого маршрута и любых дочерних маршрутов. В вашем случае я отправил бы действие с вашего контроллера на ваш маршрут, а затем обновил бы маршрут в этом обработчике действий.

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

// route.js 
actions: { 
    refreshModel: function() { 
     var route = this; 
     Ember.$.ajax({ ... }).then(function(data) { 
      route.get('controller').set('model', data); 
     }); 
    } 
} 

Однако, я бы не рекомендовал этот метод в течение первого. Слишком много переменных при работе с маршрутизацией Ember, и проще всего позволить Ember справиться со всем этим.

+0

Большое вам спасибо за ваше время !!! но я знаю, что делаю это плохо, просто я изучаю Ember @GJK – Rojke

+0

Я не знаю: D как вы это сделаете, если вам нужно вызвать эту функцию в функции контроллера после удаления чего-нибудь? – Rojke

+0

Вы хотите использовать метод [send method] (http://emberjs.com/api/classes/Ember.Controller.html#method_send) на контроллере и попросить его проложить маршрут и поймать его там. Подробнее о действиях можно прочитать здесь (http://guides.emberjs.com/v1.10.0/templates/actions/). – GJK

0

Ты либо хотите использовать model.reload освежить рекорд с сервера: http://emberjs.com/api/data/classes/DS.Model.html#method_reload

Or вы можете удалить Запись местных: http://emberjs.com/api/data/classes/DS.Model.html#method_deleteRecord

Или вы можете использовать model.destroyRecord, чтобы Эмбер сделать запрос удаления (удаленный + местное): http://emberjs.com/api/data/classes/DS.Model.html#method_destroyRecord

Я думаю, что было бы лучше использовать model.destroyRecord, но я предполагаю, что есть причина, по которой вы это делаете вручную?

+0

' deleteRecord() 'отмечает запись для удаления на сервере позже, в то время как 'destroyRecord()' полностью удаляет запись с сервера. Ни один из них не решит его проблему. Кроме того, он не использует Ember-Data, поэтому он не может использовать ничего из этого. – GJK

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