当我的应用程序失去互联网连接时,我收到来自适配器的错误,但我不确定它为什么会这样做。
Error: Adapter operation failed
at new Error (native)
at Error.EmberError (http://localhost:5966/assets/vendor.js:25883:21)
at Error.ember$data$lib$adapters$errors$$AdapterError (http://localhost:5966/assets/vendor.js:66151:50)
at ember$data$lib$system$adapter$$default.extend.handleResponse (http://localhost:5966/assets/vendor.js:67455:16)
我的应用程序适配器如下所示:
export default DS.JSONAPIAdapter.extend(DataAdapterMixin, {
host: config.apiUrl,
handleResponse(status, headers, payload) {
if (status === 422 && payload.errors) {
return new DS.InvalidError(payload.errors);
}
return this._super(...arguments);
}
});
我的应用程序路由中的错误操作永远不会被触发。
export default Ember.Route.extend({
actions: {
error(error, transition) {
console.log(error, transition); //Never displayed
}
}
});
我正在 Controller 中调用商店。
export default Ember.Controller.extend({
actions: {
getUsers() {
this.get('store').findAll('user').then((users) => {
this.set('users', users);
});
}
}
});
知道如何修复此错误并在我的 route 触发错误 Hook 吗?
谢谢
最佳答案
我认为您必须自己捕获错误,这样它就不会被 ember 数据实现捕获。
getUsers() {
this.get('store').findAll('user').then((users) => {
this.set('users', users);
}).catch((error) => {
// Add some custom error handling or do nothing to prevent the exception from getting thrown
});
}
此外,只有当转换中的 promise (例如在模型 Hook 之一)拒绝时,路由中的错误 Hook 才会被触发。如果您在 Controller 中有 promise ,则必须自己触发操作/事件。
关于javascript - 连接丢失时适配器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34081066/