抽象狀態不是繼承的數據根據上面這個問題的答案...孩子
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原型繼承的知識。