抽象状态不是继承的数据根据上面这个问题的答案...孩子
Acess parameters of parent state from child state in stateChangeStart
当你注入到使用toState $ stateChageStart它应该继承/合并来自父母国家的数据。
不幸的是,这不是在我的应用程序父母是抽象状态的工作。这里是我的路线
// Settings
.state('wfSettings', {
url: '/settings',
abstract: true,
template: '<ui-view/>',
data:{
customData1: "Hello",
customData2: "World!"
}
})
.state('wfSettings.siteSettings', {
url: "/site-settings",
templateUrl: "/templates/siteSettings.tpl.html",
controller: "SiteSettingsCtrl as siteSettings",
data:{
customData2: "UI-Router!"
}
})
当我在$ atateChangeStart功能CONSOLE.LOG(使用toState)和访问它输出该子页面。
所以你可以看到,从父数据是不存在的。
唯一奇怪的是,在上面的屏幕截图中,您可以看到Chrome开发工具已将数据旁边的“V”放在数据旁边,而不是通常的“对象”,如果我没有在数据上放置任何数据父母国家。非常奇怪的行为。
编辑:
我已经取得了一些进展。 ui路由器的版本0.2.11和0.2.18似乎有所不同。该屏幕截图显示了两行输出。第一个是根据版本0.2.11计算的$ stateChageStart中子路由的数据。
当我将库切换到0.2.18时,它会输出第二行!
编辑2:
我跟踪它到这种变化(没有归类为changelog的重大更改)
https://github.com/angular-ui/ui-router/commit/c4fec8c7998113902af4152d716c42dada6eb465
于是,我知道了什么导致它,但我仍然不知道如何解决这个问题。据推测,我需要以某种方式去原型链手动合并这些值?这有点超出了我对JavaScript原型继承的知识。