ember.js中的全局AJAX错误处理程序

时间:2015-02-27 05:52:29

标签: ember.js

我正在构建一个与后端API集成很多的Ember应用程序,所以我想设置一个全局AJAX错误处理程序,以便在AJAX请求失败时向用户显示。如何在ember.js中设置全局AJAX错误处理程序?

到目前为止,我有一个errorController:

MyApplication.ErrorController = Ember.ObjectController.extend({
    errorTitle: '',
    errorDescription: '',
    actions: {
        backToHome: function() {
            this.transitionToRoute('home');
        }
    }
});

我正在尝试使用jQuery的ajaxError函数来捕获AJAX失败:

Ember.$(document).ajaxError(function(event, jqXHR, ajaxSettings, thrownError) {
    var errorController = MyApplication.controllerFor('error');
    errorController.set('errorHeading', 'AJAX error');
    errorController.set('errorDescription', jqXHR.responseText); //server will return the error description
    MyApplication.transitionToRoute('error');
});

但是,controllerFor变量中不存在MyApplication。我不确定访问ErrorController的其他方式,因为错误功能完全超出了Ember应用程序的范围。

1 个答案:

答案 0 :(得分:0)

我怀疑这是适当的Ember做事方式,但我最终使用__container__.lookup中的MyApplication函数解决了这个问题:

Ember.$(document).ajaxError(function(event, jqXHR, ajaxSettings, thrownError) {
    var errorController = MyApplication.__container__.lookup('controller:error');
    errorController.set('errorHeading', 'AJAX error');
    errorController.set('errorDescription', jqXHR.responseText); //server will return the error description
    errorController.transitionToRoute('error');
});