我的 Ember Controller 访问 JSONAPI 服务(使用 Ember 数据),如下所示:
model: function(params) {
return Ember.RSVP.hash({
data: this.store.query('recipe', params),
...
});
},
params
可以包含一个过滤字符串,如果格式错误,将导致服务器以 HTTP 代码 422 进行响应。我在同一个 Controller 中捕获此内容,如下所示:
actions: {
error: function(error, transition) {
console.log('Retrieval error: ' + error.message);
this.controller.set('filterValid', false);
}
}
然后在我的 Handlebars 模板中,我可以检查 {{filterValid}}
我的 Controller 的属性,并可选择将样式应用于 <input>
标签,通知用户错误。
但是: 一旦 filterValid
属性已设置为 false,我似乎找不到正确的操作或 Hook 来将属性回滚/重置为 true
当查询没有失败时。由于上述代码位于我的路由中,因此我无法直接访问 model
中的 Controller 功能。 (也不,根据我见过的模型/ Controller /模板图,应该我。)
最佳答案
我认为您可能正在寻找 setupController
Hook 。它接收解析后的模型和 Controller 。
setupController: function(controller, model) {
this._super(controller, model);
controller.set('filterValid', true);
}
我不确定发生错误时是否调用该方法(我猜它没有被调用),但因为您只需要在事情正常时设置标志。我认为这对你有用。
关于javascript - Ember 模板中的 "Rolling back"错误状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34312315/