我有一个/products的模型挂钩,如下所示:

App.ProductsRoute = Ember.Route.extend({
    model: function(controller) {
        return this.find.store('product');
    }
});

这可以很好地工作,并以RESTAdapter支持的JSON约定获取产品列表,并且我可以使用{{#each}}帮助程序以products模板显示列表。

但是,当我遇到一些http错误(例如500 Internal Server Error)时,应用程序会中断,并在JSON.parse中给出错误。我无法弄清楚如何在这里利用onSuccess和onFail回调正确地解决 promise (并有效地处理错误)。非常感谢您对此主题的任何帮助。

我尝试了以下操作,但无法正常工作。即使服务器关闭,流也永远不会到达onFail方法。
App.ProductsRoute = Ember.Route.extend({
    model: function(controller) {
        var onSuccess = function(products) {
            return products;
        };
        var onFail = function(reason) {
            alert('Error occured !');
            return [];
        };

        return this.find.store('product').then(onSuccess, onFail);
    }
});

最佳答案

您可以添加一个简单的.then,其中第一个回调实质上是onSuccess,第二个回调是onFail

App.ProductsRoute = Ember.Route.extend({
    model: function(controller) {
        return this.store.find('product').then(function(response) {
            alert('working!'); //(you can return the models here if all is good)
        }, function() {
            alert('broken!');
        });
    }
});

09-11 08:56