我有以下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();
}]);
答案 0 :(得分:1)
从你的html中删除ng-controller="newProductController"
,这是唯一让你的控制器运行两次的情况,你已经在$routeProvider
中设置了控制器,所以你不需要使用ng-controller
指令!