如何将组件的控制器功能分成不同的文件?

时间:2016-10-07 00:57:26

标签: javascript angularjs

我一直在搜索和搜索,也许我在搜索中使用了错误的术语,但我找不到我想要的内容。我正在使用Angular 1.5和组件。

说我有一个组件A:

var module = angular.module('myApp');

module.component('A', {
  templateUrl: 'template.html',
  controller: function(){}
});

现在这很简单。我也知道我可以执行以下操作,只要'myControllerFunction'在同一个文件中。

var module = angular.module('myApp');

module.component('A', {
  templateUrl: 'template.html',
  controller: myControllerFunction
});

function myControllerFunction(){}

如果我想为'myControllerFunction'创建一个文件,我该怎么办?如何从我的组件中访问该文件中的该函数?

我知道使用Node.js很容易使用exports和require(),但我不太熟悉使用AngularJS做什么。

非常感谢任何帮助!谢谢!

1 个答案:

答案 0 :(得分:5)

你可以从你的模块中引用控制器,如下所示:

module.component('A', {
  templateUrl: 'template.html',
  controller: 'YourController'
});

然后在另一个文件中,您可以使用该方法定义控制器。

function() {
    'use strict';

    angular.module('app').controller('YourController',
            YourController);

    YourController.$inject = [ '$scope', '$http', '$window',
            '$rootScope' ];

    function YourController($scope, $http, $window, $rootScope) {       
        function yourcontrollerfunction() {
        }
        yourcontrollerfunction();               
    }
})();

加载控制器时会自动调用yourcontrollerfunction函数。加载模块时将加载控制器。