我的Ember控制器接触到JSONAPI服务(使用Ember Data),如下所示:
model: function(params) {
return Ember.RSVP.hash({
data: this.store.query('recipe', params),
...
});
},
params
可以包含一个过滤字符串,如果格式错误,将导致服务器使用HTTP代码422进行响应。我在同一个控制器中捕获它,如下所示:
actions: {
error: function(error, transition) {
console.log('Retrieval error: ' + error.message);
this.controller.set('filterValid', false);
}
}
在我的手柄模板中,我可以检查控制器的{{filterValid}}
属性,并可选择将样式应用于<input>
标记,通知用户错误。
但是:一旦filterValid
属性设置为false,我似乎无法找到正确的操作或挂钩,然后将属性回滚/重置为true
查询没有失败。由于上述代码位于我的路径中,因此我无法直接访问model
函数中的控制器。 (也不是,基于我见过的模型/控制器/模板图,应该我。)
答案 0 :(得分:1)
我想你可能正在寻找setupController
钩子。它接收已解析的模型和控制器。
setupController: function(controller, model) {
this._super(controller, model);
controller.set('filterValid', true);
}
我不确定是否在发生错误时调用该方法(我猜它没有被调用),但是因为你只需要在事情正常时设置标志。我认为这对你有用。