我有一个1.5角应用程序,它使用ui-router 1.0的组件路由。
.config(/*@ngInject*/($stateProvider) => {
$stateProvider
.state('efd.kbe', {
url: '',
abstract: true,
template: '<div ui-view="kbe"></div><div ui-view="ala"></div>'
})
.state('efd.kbe.show', {
url: '/kbe/{kbeId}',
views:{
'kbe@efd.kbe':{
component: 'showkbe'
},
'ala@efd.kbe':{
component: alaComponent.name
}
}
})
.state('efd.kbe.create', {
url: '/kbe/create',
views: {
'kbe@efd.kbe':{
component: 'createeditkbe'
},
'ala@efd.kbe':{ }
}
})
.state('efd.kbe.edit', {
url: '/kbe/{kbeId}/edit',
views: {
'kbe@efd.kbe':{
component: 'createeditkbe'
},
'ala@efd.kbe' :{
component: alaComponent.name
}
}
});
})
.component('kbe', {
template: defaultTemplate,
abstract: true
})
.component('showkbe', {
template: showTemplate,
controller: controller,
bindings: {
onActiveStateChange: '&',
kbeActiveState: '<'
}
})
.component('createeditkbe', {
template: createEditTemplate,
controller: controller
})
我想在组件中调用&#34; showkbe&#34;方法&#34; onActiveStateChange&#34;应该在父组件&#34; kbe&#34;中运行,但我找不到让它运行的方法。我学过 https://ui-router.github.io/guide/ng1/route-to-component#routed-parentchild-component-communication以及相关的plunkr:https://plnkr.co/edit/6Vk1dN 我的代码和这个例子之间的区别似乎是命名视图。这可能是ui-router和组件绑定不兼容的原因吗?
编辑:
我试图将on-active-state-change="$ctrl.foo()"
添加到状态efd.kbe以及efd模板中的ui-view元素,但我无法在子组件中获取调用&#34; showkbe&#34;触发任何父母的任何事情。