Один угловой контроллер, но каждый метод в отдельном файле

0

Я хочу иметь один угловой контроллер, но каждый метод внутри отдельного файла и $ scope разделяет все файлы. на самом деле, его единственный контроллер, но разложенный на несколько файлов.

я делаю что-то вроде этого, но он не работает:

file1.js

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

    };
});

file2.js

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

    };
});

file3.js

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

    };
});

2 ответа

0
Лучший ответ

То, что вы делаете сейчас, на самом деле перезаписывает все снова. Например, вы указываете app 3 раза, поэтому вы фактически создаете 3 приложения (которые вы всегда перезаписываете снова). Вы можете создать контроллер только один раз, и, насколько я знаю, вы не сможете обновить контроллер позже. Поэтому вам нужно будет указать каждый метод, который вы хотите в контроллере, сразу.

Похоже, вы хотите использовать разные сервисы. Если вы создадите службу для каждого метода, вы можете указать все эти службы в своем контроллере. Затем вы можете получить доступ к методам, использующим эти службы.

Затем вы можете объединить эти службы следующим образом:

app.controller("mainCtrl", ["$scope", "name-of-service1", "name-of-service2",
    function($scope, service1, service2){
        $scope.service1Method = service1.method;
        $scope.service2Method = service2.method;
    }
]);
  • 0
    я обновил свой вопрос
0

Методы внутри контроллера не могут использоваться совместно. Сервисы 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()
})

Ещё вопросы

Сообщество Overcoder
Наверх
Меню