2013-12-08 4 views
18

Я делаю что-то похожее ниже на моем приложении, но я просто не могу получить событие routeChangeSuccess.

var myapp = angular.module('myapp', ["ui.router", "ngRoute"]); 

myapp.controller("home.RootController", 
    function($rootScope, $scope, $location, $route) { 
    $scope.menus = [{ 'name': 'Home ', 'link': '#/home'}, {'name': 'services', 'link': '#/services'} ] 

    $scope.$on('$routeChangeSuccess', function(event, current) { 

     alert('route changed'); 
    }); 

    } 
); 

myapp.config(
    function($stateProvider, $urlRouterProvider, $routeProvider) { 
    $urlRouterProvider.otherwise("/home"); 
    $stateProvider 
     .state('home', { 
     url: "/home", 
     //template: '<h1>Home Screen</h1>' 
     templateUrl: "/Client/Views/Home/Home.htm" 
     }) 
     .state('services', { 
     url: "/services", 
     //template: '<h1>Service screen</h1>' 
     templateUrl: "/Client/Views/Home/service.htm" 

     }); 
    }); 

очень простой HTML, как показано ниже также не

<body ng-controller="home.RootController"> 

    <ul class="nav"> 
     <li ng-repeat="menu in menus" "=""> 
     <a href="{{menu.link}}">{{menu.name}}</a> 
     </li> 
    </ul> 
    <div ui-view> No data yet!</div> 
    </body> 

, но когда я нажимаю на ссылку я вижу, что взгляды становятся все обновляется, но $ routeChangeSucces событие никогда не срабатывает.

Есть ли что-то, что мне не хватает?

Другой вопрос У меня было есть событие, которое я могу подключить, чтобы узнать, что представление готово, поэтому я могу начать некоторую дополнительную обработку, например document.ready().

plnlr, но полностью не работает ...

С уважением Киран

+0

'ui.router' не предназначен для использования с' ngRoute'. Используйте один или другой. –

ответ

41

Пожалуйста, проверьте эту вики: State Change Events. Экстракт:

  • $ stateChangeSuccess - срабатывает после завершения перехода состояния.

    $ сфера. $ На ('$ stateChangeSuccess',
    функция (событие, toState, toParams, fromState, fromParams) {...})

Так вместо $routeChangeSuccess использовать $stateChangeSuccess ,

Чтобы получить более подробную информацию обо всех доступных событиях, ознакомьтесь с wiki Events. Здесь вы можете найти, что подходит для вас, может быть событие $viewContentLoaded ...

+0

спасибо! $ viewContentLoaded - это то, что я искал. Кстати, я не смог получить событие $ viewContentLoading. не знаю почему. но $ viewContentLoaded работает просто отлично – Kiran

+0

Аналогично, проверьте '$ stateChangeStart'. – weltschmerz

0

stateChange события теперь устарели и удалены, используйте transitions вместо этого.

$transitions.onSuccess({}, function() { 
    console.log("state changed"); 
}); 
Смежные вопросы