比方說,我們有我們的$ stateProvider定義的父子關係如下:如何使角度ui路由器的父狀態總是在狀態改變時執行控制器代碼?
.state('myProfile', {
url: "/my/profile",
templateUrl: 'my/profile.html',
controller: 'MyProfileController'
}).state('myProfile.edit', {
url: "/edit",
templateUrl: 'my/profile.edit.html',
controller: 'EditMyProfileController'
});
這裏的想法是父myProfile
狀態是不可編輯的,但孩子myProfile.edit
狀態是實際形式編輯配置文件。讓我們忽略這是一個配置文件頁面應該如何工作 - 我只是玩弄事物和學習。
當用戶提交表單,我使用$狀態對象回到父頁面:
$scope.save = function() {
userResource.update($scope.user, function() {
SessionService.refresh();
$state.go('myProfile'); // also tried with reload: true as well
});
}
用戶後保存配置數據 - 這是得到妥善保存 - 的父母的視圖不會更新,除非我按F5並刷新瀏覽器。
我注意到的一件事是,如果我讓孩子myProfile.edit
狀態成爲父母本身而不是myProfile
狀態的孩子,這個問題實際上消失了,事情表現如預期(儘管佈局看起來像這樣)。
似乎UI路由器可能會緩存父級的結果,不確定事情在模型中發生了變化,並且需要重新運行控制器?
如何保持父母與子女之間的關係,同時仍然讓父母myProfile
頁面始終執行其控制器以重新加載其數據?基本上,我希望這種情況發生在$state
時,或者點擊指向myProfile
的鏈接。我怎樣才能做到這一點?
如果我不能做我想問的問題,那麼我知道我可以設置一些子狀態並讓它們按預期工作......但是,如何設置父級的默認子狀態?例如,假設我想myProfile.edit
是默認的子狀態myProfile
- 我該怎麼做?
謝謝!
這是有幫助的,但在我的情況下,我有href的,因爲他們來自CMS。在這種情況下,我無法弄清楚如何將reload設置爲true。 – drye
希望我可以upvote兩次 - 謝謝你! – Ben
我也有同樣的問題。我也來自第三方系統。 – DragonDTG