2013-12-08 18 views
18

Tôi đang làm một cái gì đó tương tự như dưới đây trên ứng dụng của tôi nhưng tôi chỉ không thể có được sự kiện 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" 

     }); 
    }); 

một html rất đơn giản như dưới đây cũng không

<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> 

nhưng khi tôi nhấp vào liên kết tôi thấy rằng các quan điểm đang nhận được cập nhật nhưng routeChangeSucces kiện $ không bao giờ được kích hoạt.

có điều gì đó tôi bị thiếu không?

Một câu hỏi khác Tôi đã có một sự kiện mà tôi có thể nối tiếp để biết chế độ xem đã sẵn sàng để tôi có thể bắt đầu xử lý bổ sung, như document.ready().

plnlr nhưng không hoàn toàn làm việc ...

Trân Kiran

+0

'ui.router' không có ý định được sử dụng với' ngRoute'. Hãy sử dụng cái này hay cái kia. –

Trả lời

41

Xin vui lòng, kiểm tra wiki này: State Change Events. Trích xuất:

  • $ stateChangeSuccess - được kích hoạt khi quá trình chuyển đổi trạng thái hoàn tất.

    $ phạm vi. $ Trên ('$ stateChangeSuccess',
    chức năng (sự kiện, toState, toParams, fromState, fromParams) {...})

Vì vậy, thay vì sử dụng $routeChangeSuccess$stateChangeSuccess .

Để biết thêm thông tin chi tiết về tất cả các sự kiện có sẵn, hãy kiểm tra wiki Events. đây bạn có thể thấy rằng phù hợp với bạn, có thể là sự kiện $viewContentLoaded ...

+0

cảm ơn! $ viewContentLoaded là những gì tôi đang tìm kiếm. BTW Tôi đã không thể nhận được sự kiện $ viewContentLoading mặc dù. không chắc chắn lý do tại sao. nhưng $ viewContentLoaded chỉ hoạt động tốt – Kiran

+0

Tương tự, hãy kiểm tra '$ stateChangeStart'. – weltschmerz

0

stateChange sự kiện hiện đang bị phản đối và loại bỏ, sử dụng transitions để thay thế.

$transitions.onSuccess({}, function() { 
    console.log("state changed"); 
}); 
Các vấn đề liên quan