2016-06-08 29 views
0

例如,我有這樣簡單的片斷:

var sampleApp = angular.module('sampleApp', []); 
sampleApp.config(['$routeProvider', 
    function($routeProvider, $rootScope) { 
    $routeProvider. 
     when('/AddNewOrder', { 
    templateUrl: 'add_order.html', 
    controller: 'AddOrderController' 
     }). 
     when('/ShowOrders', { 
    templateUrl: 'show_orders.html', 
    controller: 'ShowOrdersController' 
     }). 
     otherwise({ 
    redirectTo: '/AddNewOrder' 
     }); 
}]); 

sampleApp.controller('AddOrderController', function($scope, $rootScope) { 
    $scope.message = 'This is Add new order screen'; 

    $scope.$on('$viewContentLoaded', function (event, toState, toParams, fromState, fromParams) { 
     console.log("Add new order"); 
    }); 

}); 

sampleApp.controller('ShowOrdersController', function($scope,$rootScope) { 
    $scope.message = 'This is Show orders screen'; 

    $scope.$on('$viewContentLoaded', function (event, toState, toParams, fromState, fromParams) { 
     console.log("Show orders"); 
    }); 
}); 

是app.js從納克例如,並且在它的瀏覽器例如看起來如此: enter image description here

完整版,你可以在這裏看到:http://plnkr.co/edit/jc3nFBAaBLMiGMYV4TZW?p=preview

哪裏是有些奇怪:

$scope.$on('$viewContentLoaded', function (event, toState, toParams, fromState, fromParams) { 
     console.log("Add new order"); 

$scope.$on('$viewContentLoaded', function (event, toState, toParams, fromState, fromParams) { 
      console.log("Show orders"); 
     }); 

每個調用兩次單擊鏈接時。 另外我嘗試使用'$ routeChangeSuccess',但結果相同。 爲什麼會發生? 需要做些什麼才能獲得$ scope的單個調用$ on(..)?

+0

你的鏈接與他們的hrefs?明顯調用路由的原因 – misha130

+1

只需檢查是否包含控制器兩次(一次在您的狀態中,一次在您的html中作爲ng-controller) –

回答

2

將您的href="#AddNewOrder"更改爲href="#/AddNewOrder"。 因爲你的控制器初始化了兩次。