我的Ember控制器访问JSONAPI服务(使用Ember数据),如下所示:
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}}
属性,并可选择将样式应用于
但是:一旦filterValid
属性设置为false,我似乎找不到正确的操作或挂钩,然后在查询没有失败时将属性回滚/重置为true
。由于上述代码在我的路由中,我无法直接访问model
函数中的控制器。(根据我看到的模型/控制器/模板图,我也不应该这样做。)
我想你可能在寻找setupController
钩子。它接收解析的模型和控制器。
setupController: function(controller, model) {
this._super(controller, model);
controller.set('filterValid', true);
}
我不确定发生错误时是否调用了该方法(我猜它没有被调用),但因为您只需要在事情进展顺利时设置标志。我认为这对您有用。