控制之后的stateChangeSuccess被移动到ui路由器中的下一个状态控制器

时间:2014-10-09 05:03:57

标签: javascript angularjs angular-ui-router

我拥有的是$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时触发的事件。

更新 没有必要使视图或部分加载。当控件从一个控制器移动到另一个控制器时,我只需要一个事件。

1 个答案:

答案 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回调。