angular.module.controller的替代语法

时间:2013-03-15 09:20:23

标签: angularjs

我有带指令和应用程序的模块,它是带控制器的模块。

angular.module('ValidationWidgets', [])
    .directive('validationfield', function () {
         ....
    });


angular.module('MyPage', ['ValidationWidgets'])
       .controller('MyFirstController', function ($scope) {

        ....
    });

是否有一些漂亮的语法在app模块中声明许多控制器,因为.controller('MyFirstController', function ($scope) {看起来很糟糕?

我想写一些类似的东西:

var myPage = angular.module('MyPage', ['ValidationWidgets']);

myPage.controllers.MyFirstController = function($scope) {
  ...
}

2 个答案:

答案 0 :(得分:3)

var app = angular.module("myApp", []);
app.controller("my controller", function(){});

var app = angular.module("myApp", []);
var controllers = {};
controller.myController = function(){};
app.controller(controllers);

观看此视频http://egghead.io/video/angularjs-thinking-different-about-organization/

诚实地讲,整个系列都很棒。

答案 1 :(得分:0)

要扩展@Jacob Dalton所说的内容,你可以这样做:

设置您的路线:

app.config(['$routeProvider', function($routeProvider, $locationProvider) {
    $routeProvider.
        when('/view1', {templateUrl: 'partials/view1', controller: 'View1Ctrl'}).
        when('/view2', {templateUrl: 'partials/view1', controller: 'View2Ctrl'}).
        otherwise({redirectTo: '/view1'});
}]);

然后你可以通过简单地声明一个函数来声明你的控制器:

function View1Ctrl($scope, $http) {
}

function View2Ctrl($scope, $http) {
}

这些功能将作为控制器自动连线。然而,如前所述,这使得这些功能不再是控制器。