在AngularJS中分离控制器

Separating Controllers in AngularJS

本文关键字:控制器 分离 AngularJS      更新时间:2023-09-26

我试图将我的Angular控制器分离到不同的文件中。现在每个都是这样的

AddPropertyController.js

angular.module('myApp.controllers.addproperty', [])
    .controller(...);

SearchController

angular.module('myApp.controllers.search', [])
.controller(...);

现在,我必须把每一个都包含在Angular的myApp中。通过:

angular.module('myApp', [
        'myApp.controllers.search',
        'myApp.controllers.addproperty'
    ])

我的问题是,有没有一种方法可以一次包含它们而不是单独添加它们?我的第一次尝试是将每个模块命名为相同的angular.module('myApp.controllers',…),然后只包括myApp。控制器。但这似乎不起作用……我想我问的是什么是最好的方法,有分离的控制器文件,但在一个模块。谢谢你的帮助!

查看angularjs文档中有关控制器的信息,并将它们添加到应用级模块…

例如你的代码:

var myApp = angular.module('myApp',[]);
myApp.controller('SearchController', ['$scope', function($scope) {
  $scope.search = 'Hola!';
}]);
myApp.controller('AddPropertiesController', ['$scope', function($scope) {
  $scope.props = [];
}]);

你基本上是将每个控制器附加到myApp实例,所以应用程序知道控制器

我会这样组织它们:

MyController1.js

  var MyController1 = ['$scope', function($scope) {
  }];

MyController2.js

  var MyController2 = ['$scope', function($scope) {
  }];

MyModule.js

  var app = angular.module('MyModule',[]);
  app.controller({
      MyController1: MyController1,
      MyController2: MyController2,
      etc
  });

这与Angular源代码本身的组织方式类似:

  1. AngularPublic.js
  2. ng指令