Я хочу иметь один угловой контроллер, но каждый метод внутри отдельного файла и $ 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) {
};
});
То, что вы делаете сейчас, на самом деле перезаписывает все снова. Например, вы указываете 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;
}
]);
Методы внутри контроллера не могут использоваться совместно. Сервисы 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()
})