对路线/控制器的操作

时间:2016-01-18 09:32:10

标签: ember.js

我正在使用:

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}}时,将调用这些函数   从模板和应用程序的当前路径中触发   是这条路。

这似乎是错误的(应该是"应用程序的当前控制器是这个控制器")。

0 个答案:

没有答案