我可以在同一个控制器的两个不同文件中对同一个ng-app进行两次angular.module调用吗?

时间:2015-06-05 07:08:05

标签: angularjs

您好我为同一个ng-app示例创建了两个angulerjs文件。

admin.js

 var app = angular.module('arcadminmodule', ['ngTable', 'ui-notification']);
    app.controller('ArcAdminController', ['$http', '$scope', '$filter', '$interval', 'ngTableParams', 'Notification', function($http, $scope, $filter, $interval, ngTableParams, Notification) {});

admin1.js

var app = angular.module('arcadminmodule');
    app.controller('ArcAdminController', ['$http', '$scope', '$filter', '$interval', 'ngTableParams', 'Notification', function($http, $scope, $filter, $interval, ngTableParams, Notification) {});

但是它来自admin1.js的重写admin.js

请帮帮我....

2 个答案:

答案 0 :(得分:0)

撰写时在admin1.js中:

var app = angular.module('arcadminmodule');

您没有创建新模块。您正在尝试获取名为' arcadminmodule'的现有模块。如果您要创建新模块,则必须编写如下内容:

  var app = angular.module('arcadminmodule',[]); // add your depencencies...

现在,在您的情况下,在admin.js中您正在创建模块和admin1,您正在使用相同的模块。在角度中,您不能有两个具有相同名称的控制器。控制器适用于(来自文档):

  1. 设置$ scope对象的初始状态。
  2. 向$ scope对象添加行为。
  3. 因此,如果您需要尝试应用某些角色或某些业务逻辑,则需要进入一个控制器。 确保您的控制器仅包含单个视图所需的业务逻辑。

答案 1 :(得分:0)

我认为不需要在两个地方使用相同的控制器。但是你可以在地方使用服务。如果你需要做一些与ArcAdminController不同的思考,请使用这个结构。

服务 -service1.js



(function (angular) {
    angular.module('marineControllers').service('boatService', function (ajaxService) {
      }
                                                )




-service2.js -module..js



var artistControllers = angular.module('marineControllers',['ngAnimate']);




控制器 -controller1



(function (angular) {
    angular.module('marineControllers').controller("BoatController", ['$scope', '$http', '$routeParams',
        'dashboardService', '$filter', 'loginService', '$location', 'boatService', 'autocompleteFactory', 'utilityFactory',
        function ($scope, $http, $routeParams, dashboardService, $filter, loginService, $location, boatService, autocompleteFactory, utilityFactory) {
                      
          
          function loadAllFishingBoat() {
                $scope.boatsTable.length = 0;
                if (!$scope.$$phase)
                    $scope.$apply();
                boatService.getAllBoatAndDevice().then(function (data) {
                    $scope.boatsTable = data;
                    if (!$scope.$$phase)
                        $scope.$apply();
                });
            };

          
                  }]);
})(angular);




-controller2



(function (angular) {
angular.module('marineControllers').controller("DeviceController", ['$scope', '$http', '$routeParams',
    'dashboardService', '$filter', 'loginService', '$location', 'deviceService', 'autocompleteFactory', 'utilityFactory','commonDataService',
    function ($scope, $http, $routeParams, dashboardService, $filter, loginService, $location, deviceService, autocompleteFactory, utilityFactory,commonDataService) {

        function loadAllFishingBoat() {
            $scope.boatsTable.length = 0;
            if (!$scope.$$phase)
                $scope.$apply();
            boatService.getAllBoatAndDevice().then(function (data) {
                $scope.boatsTable = data;
                if (!$scope.$$phase)
                    $scope.$apply();
            });
        };


    }]);

})(angular);




我在两个控制器中都使用过很多服务,但它们仍然是不同的逻辑。