我有/products
的模型钩子,如下所示:
App.ProductsRoute = Ember.Route.extend({
model: function(controller) {
return this.find.store('product');
}
});
这很好用,可以在RESTAdapter支持的JSON约定中获取产品列表,我可以使用{{#each}}帮助器在products
模板中显示列表。
但是当我收到一些http错误(比如说500内部服务器错误)时,应用程序会在JSON.parse中出现错误。我无法弄清楚如何在这里使用onSuccess和onFail回调来正确解析promises(并有效地处理错误)。非常感谢您对此主题的任何帮助。
我试过了,但它不起作用。即使服务器关闭,流程也永远不会达到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);
}
});
答案 0 :(得分:2)
您可以添加一个简单的.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!');
});
}
});
答案 1 :(得分:1)
我认为你应该告诉转换为中止,因为模型钩子可能需要返回一个真实的对象。
为此,请使用模型钩子的第二个参数(它是过渡对象)。