我拥有的是$state.go
迷宫和许多嵌套状态。为了简化问题,我所拥有的就是这个。
states.js
$stateProvider.state('main', {
url: "/create/",
templateUrl: "/static/partials/hotel_offers/navigation.html",
controller: "NavigatorController"
})
.state('main.photos', {
url: "select_photos/:property_id/:template",
templateUrl: "/static/partials/hotel_offers/photos.html",
controller: "PhotoController"
})
.state('main.details', {
url: "offer_details/:reference/:property_id/:template",
templateUrl: "/static/partials/hotel_offers/details.html",
controller: "OfferDetailsController"
});
在 NavigatorController 中,
$state.go('main.details', params);
$scope.$on('$stateChangeSuccess', function() {
$scope.$broadcast('dataFetchComplete');
});
当代码处于main.photos
状态时。
在 PhotoController 和 OfferDetailsController 中,
$scope.$on('dataFetchComplete', function() {
console.log($state.current.name);
});
问题是我在控制台中得到main.photos
,但情况并非如此。基本上我需要的是当控制转移到OfferDetailsController
时触发的事件。
更新 没有必要使视图或部分加载。当控件从一个控制器移动到另一个控制器时,我只需要一个事件。
答案 0 :(得分:0)
也许是这样的?
.state('main.details', {
url: "offer_details/:reference/:property_id/:template",
templateUrl: "/static/partials/hotel_offers/details.html",
controller: "OfferDetailsController",
onEnter: function(){
do something...
}
});
离开视图时还有一个onExit
回调。