我有一个名为 list 的主要路线。

//items/list/route.js
setupController(controller, items) {
    let vegItems = Ember.A([]);
    let nonVegItems = Ember.A([]);
    items.forEach((item) => {
        if (item.get('category') === "veg") {
            vegItems.pushObject(item);
        }

        if (item.get('category') === "non_veg") {
            nonVegItems.pushObject(item);
        }
    })

    controller.set('vegItems', vegItems)
    controller.set('nonVegItems', nonVegItems);
}

现在在列表路由中,我有名为 veg non-veg 的路由。即列表/蔬菜和列表/非蔬菜。如何访问父路由的 Controller 变量,即 vegItems nonVegItems 从 list/route.js 到子路由以加载 list/veg/template.hbs 和 list/non-veg/template 中的数据。 hbs?

最佳答案

this.controllerFor('list') - 返回当前路由的 Controller ,或路由层次结构中的父(或任何祖先)路由。您可以通过 get 方法获取所有属性。
this.modelFor('list') - 返回路由层次结构中父(或任何祖先)路由的解析模型。
list:Ember.inject.controller() - 创建一个属性来懒惰地查找容器中的另一个 Controller 。您只能在 Controller 中注入(inject)它。

引用:

https://emberjs.com/api/ember/2.14/classes/Ember.Route/methods/controllerFor?anchor=controllerFor

https://emberjs.com/api/ember/2.14/classes/Ember.Route/methods/controllerFor?anchor=modelFor

https://www.emberjs.com/api/ember/2.14/namespaces/Ember.inject/methods/controller?anchor=controller

关于javascript - 如何从 Ember JS 中的子路由访问父 Controller ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40395266/

10-13 07:58
查看更多