我将如何通过JS触发的routeChangeStart事件事件或单击来了解

时间:2017-01-30 13:59:23

标签: javascript angularjs routes angular-ui-router ngroute

Main.js

$routeProvider
    .when('/home', {
        templateUrl: 'home.html',
        controller: 'StudentController'
    })
    .when('/viewStudents', {
        templateUrl: 'viewStudents.html',
        controller: 'StudentController'
    })
    .when('/viewTeacher', {
        templateUrl: 'viewTeacher.html',
        controller: 'StudentController'
    })
    .otherwise({
        redirectTo: '/home'
    });

另一个jS中的代码

   $rootScope.$on("$routeChangeStart", function(event, next, current){
                console.log(event);
                //here i want to detect         
            });

当用户访问JS&amp ;; home.html在视图中添加

.otherwise({
            redirectTo: '/home'
        });

有一个按钮,调用viewStudents.html然后路由将更改,viewStudents.html将呈现

我将如何获得routeChangeStart函数,该路由因jS或用户点击而发生变化

1 个答案:

答案 0 :(得分:2)

由$ rootScope。$ emit'或$ rootScope触发的routeChangeStart事件。$ broadcast

使用此事件系统是将数据子控制器传递给父级。

当您调用广播事件时,$ on on事件将会调用。

当你的控制器加载时它会调用一次。你可以用函数在外部调用它。

    app.controller('ChildCtrl',
      function ChildCtrl ($rootScope) {

      $rootScope.$emit('rootScope:emit', 'Emit!'); // $rootScope.$on
      $rootScope.$broadcast('rootScope:broadcast', 'Broadcast'); // $rootScope.$on && $scope.$on

    });

app.controller('ParentCtrl',
  function SiblingOneCtrl ($rootScope) {
    var myListener = $scope.$on('child', function (event, data) {
        // do something
      });
    });

app.controller('ParentCtrl',
  function ParentCtrl ($scope) {

    var myListener = $rootScope.$on('child', function (event, data) {
        // do something
      });
});