2013-10-15 2 views
3

как можно отрегулировать перегрузкуАдаптивные ошибки из магазина или адаптера? Теперь я использую этот код:Обработка ошибок с адаптера

App.ApplicationRoute = Ember.Route.extend({ 
    model: function(){ 
     var self = this; 
     return this.store.find('item').then(function(data){ 
      return data; 
     }, function (error){ 
      console.log('error'); 
      return []; 
     }); 

    }, 
}); 

Было бы лучше что-то более общее. Благодаря

+0

Я не совсем понимаю ваш вопрос. Но ради общей информации. Ember-Data все еще находится в разработке, и большой план заключается в том, чтобы повысить общую обработку ошибок. [Этот блог проливает свет на это.] (Http://emberjs.com/blog/2013/05/28/ember-data-0-13.html) –

+0

Я это знаю. Мои вопросы: как я поймаю ошибку, если серверные данные-api не будут отвечать. Я делаю это согласно моему примеру. Но он создается только для маршрута приложения, но мне нужно его для каждого store.find(). –

+0

Может быть, чрезмерная поездка в магазины, чтобы найти метод для предупреждения об ошибках? –

ответ

5

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

Расширение RESTAdapter для разбора ошибок от объекта XHR

App.ApplicationAdapter = DS.RESTAdapter.extend({ 
    ajaxError: function (jqXHR) { 
    jqXHR = this._super(jqXHR) || {status : 'unknown'}; 
    var error; 
    if (jqXHR.status === 404) { 
     error = 'not_found'; 
    } else if (...) { 
     ... 
    } else { 
     error = 'dunno'; 
    } 
    return error; 
    } 
}); 

Расширение магазина публиковать события ошибок, когда плохие вещи случаются

App.Store = DS.Store.extend(Ember.Evented, { 
    recordWasError: function (record, reason) { 
    this._super.apply(this, arguments); 
    this.trigger('error', reason); 
    } 
}); 

Поймайте ошибка в вашем приложении Маршрут

App.ApplicationRoute = Ember.Route.extend({ 
    setupController: function() { 
    this.get('store').on('error', function (error) { 
     // Do something with the error 
     console.error(error); 
    }); 
    }, 

    ... 
}); 
Смежные вопросы