Javascript 一个角度控制器,但每个方法位于单独的文件中

Javascript 一个角度控制器,但每个方法位于单独的文件中,javascript,angularjs,node.js,Javascript,Angularjs,Node.js,我希望有一个角度控制器,但每个方法都在一个单独的文件中,并且$scope在所有文件中共享。事实上,它是一个单一的控制器,但分解成几个文件 我做了类似的事情,但不起作用: file1.js var app = angular.module("main"); app.controller("mainCtrl", function ($scope) { $scope.method1 = function (content) { }; }); var app = angular.mo

我希望有一个角度控制器,但每个方法都在一个单独的文件中,并且$scope在所有文件中共享。事实上,它是一个单一的控制器,但分解成几个文件

我做了类似的事情,但不起作用:

file1.js

var app = angular.module("main");
app.controller("mainCtrl", function ($scope) {
    $scope.method1 = function (content) {

    };
});
var app = angular.module("main");
app.controller("mainCtrl", function ($scope) {
    $scope.method2 = function (content) {

    };
});
var app = angular.module("main");
app.controller("mainCtrl", function ($scope) {
    $scope.method3 = function (content) {

    };
});
file2.js

var app = angular.module("main");
app.controller("mainCtrl", function ($scope) {
    $scope.method1 = function (content) {

    };
});
var app = angular.module("main");
app.controller("mainCtrl", function ($scope) {
    $scope.method2 = function (content) {

    };
});
var app = angular.module("main");
app.controller("mainCtrl", function ($scope) {
    $scope.method3 = function (content) {

    };
});
file3.js

var app = angular.module("main");
app.controller("mainCtrl", function ($scope) {
    $scope.method1 = function (content) {

    };
});
var app = angular.module("main");
app.controller("mainCtrl", function ($scope) {
    $scope.method2 = function (content) {

    };
});
var app = angular.module("main");
app.controller("mainCtrl", function ($scope) {
    $scope.method3 = function (content) {

    };
});

您现在所做的实际上是再次覆盖所有内容。例如,您指定了
应用程序
3次,因此实际上创建了3个应用程序(您总是再次覆盖)。你只能创建一个控制器一次,据我所知,你以后不能更新控制器。因此,您必须立即在控制器中指定所需的每个方法

看起来你想用不同的。如果为每个方法创建服务,则可以在控制器中指定所有这些服务。然后,您可以使用这些服务访问这些方法

然后,您可以按如下方式将这些服务分组:

app.controller("mainCtrl", ["$scope", "name-of-service1", "name-of-service2",
    function($scope, service1, service2){
        $scope.service1Method = service1.method;
        $scope.service2Method = service2.method;
    }
]);

无法共享控制器内的方法。Angularjs服务用于在两个或多个对象之间共享数据

要完成此任务,请在控制器中创建一个服务并添加依赖项,这样您就可以在任何控制器中的任何位置使用单一服务方法

角度服务

module.service('MyService', function() {
this.method1 = function() {
        //..
    }

this.method2 = function() {
        //..
    }

});
在控制器中使用服务

module.controller('myController',function(MyService){
    //You can use service method like service-name.method-name
    MyService.method2()
})

不能在多个文件中分解单个控制器。但是您可以使用angular服务并在许多控制器中使用它们。我认为您没有使用空数组来声明您的模块,您应该这样声明您的模块:“var app=angular.module(“main”,[]);”,就像文档中所说的:,