我正在使用:
DEBUG: -------------------------------
DEBUG: Ember : 2.2.0
DEBUG: Ember Data : 2.2.1
DEBUG: jQuery : 1.11.3
DEBUG: Ember Simple Auth : 1.0.0
DEBUG: -------------------------------
我需要在处理动作时设置控制器。我在申请路线中定义了一个动作:
// routes/application.js
import Ember from 'ember';
export default Ember.Route.extend({
filterCategories: Ember.inject.controller('filter-categories'),
actions: {
openSubcategory(categoryId, subcategoryId) {
...
}
}
});
但我明白了:
未捕获错误:断言失败:定义注入的控制器 不允许在非控制器上使用属性。
这是无处可记录的(至少我找不到它),但没关系。我将把动作移动到应用程序控制器:
// controllers/application.js
import Ember from 'ember';
export default Ember.Controller.extend({
filterCategories: Ember.inject.controller('filter-categories'),
actions: {
openSubcategory(categoryId, subcategoryId) {
...
return false;
},
},
});
现在我明白了:
未捕获错误:没有处理动作' openSubcategory'。如果你 确实处理了这个动作,这个错误可以通过返回true来引起 控制器中的动作处理程序,导致动作冒泡。
我显然正在处理应用程序控制器中的操作,所以这不是真的。我也从该动作处理程序返回false
,所以没有冒泡。会发生什么事?关于指南中的操作的文档很少,而且只有component related。控制器和路线中的动作怎么样?
API文档讨论了controller和routes.On控制器中的操作:
当匹配{{action}}时,将调用这些函数 从模板和应用程序的当前路径中触发 是这条路。
这似乎是错误的(应该是"应用程序的当前控制器是这个控制器")。