Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $scope.$on(';$viewContentLoaded';,…调用了两次或更多次_Javascript_Angularjs_Javascript Events - Fatal编程技术网

Javascript $scope.$on(';$viewContentLoaded';,…调用了两次或更多次

Javascript $scope.$on(';$viewContentLoaded';,…调用了两次或更多次,javascript,angularjs,javascript-events,Javascript,Angularjs,Javascript Events,例如,我有这样一个简单的片段: var sampleApp = angular.module('sampleApp', []); sampleApp.config(['$routeProvider', function($routeProvider, $rootScope) { $routeProvider. when('/AddNewOrder', { templateUrl: 'add_order.html', controller: 'AddOrde

例如,我有这样一个简单的片段:

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");
    });
});
它是ng示例中的app.js,在浏览器中,它的示例看起来是这样的:

您可以在此处看到完整版本:

有些奇怪的地方在哪里:

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

在每次点击链接时调用两次。 我还尝试使用“$routeChangeSuccess”,但结果是一样的。 为什么会发生这种情况? 要获得$scope.$on(..)的单个调用,需要做些什么?

将您的
href=“#AddNewOrder”
更改为
href=“#/AddNewOrder”
。 因此,您的控制器初始化了两次。

将您的
href=“#AddNewOrder”
更改为
href=“#/AddNewOrder”

因此,您的控制器初始化了两次。

其中是否包含带有HREF的链接?因为这显然会调用路由只需检查您是否包含了控制器两次(一次在您的状态中,一次在html中作为ng控制器)你的链接中有HREF吗?因为这显然会调用路由只需检查你是否包含了控制器两次(一次在你的状态中,一次在你的html中作为ng控制器)
$scope.$on('$viewContentLoaded', function (event, toState, toParams, fromState, fromParams) {
            console.log("Show orders");
        });