控制器定义块/主体执行多少次?

时间:2016-08-19 21:33:13

标签: angularjs

我有以下AngularJS代码。我有一个产品列表,我希望能够使用一个控制器从列表中定义新产品或更新所选产品。以下是我的代码。

当我想在列表中编辑产品时,我只需致电:

$scope.EditProduct = function(prodId) {
    $location.path('/productedit/' + prodId);
};

由于某种原因,newProductController的主要定义主体被调用两次。我可以看到函数" GetProductForEdit"被叫两次。我搜索了所有项目,只有一次调用GetProductForEdit。

有人可以解释为什么会这样吗?这是AJ中的常见行为吗?我做错了什么?

非常感谢您的帮助。

梅迪

我正在使用ngRoute。

http://127.0.0.1:5000/static/pages/index.html#/productedit/1

myApp.config(function ($routeProvider) {
    $routeProvider
        // some more routes
        ...
        // route for the product edit page
        .when('/productedit/:id', {
            templateUrl: '../pages/productedit.html',
            controller: 'newProductController'
        });
});


myApp.controller('newProductController', ['$scope', '$http', '$routeParams', function ($scope, $http, $routeParams) {
    ....

    $scope.GetProductForEdit = function(prodId) {/* code here is called twice*/};

    $scope.Init = function() {
        if ($routeParams.id != undefined && $routeParams.id != '') {
            $scope.Operation = 'Update';            
            $scope.GetProductForEdit($routeParams.id);
        } else {
            $scope.Operation = 'New';
            $scope.CleanupForm();
        }
    };

    $scope.Init();

}]);

1 个答案:

答案 0 :(得分:1)

从你的html中删除ng-controller="newProductController",这是唯一让你的控制器运行两次的情况,你已经在$routeProvider中设置了控制器,所以你不需要使用ng-controller指令!