Как я могу получить доступ к свойству контроллера в службе?
В моем случае это массив, который я хочу изменить в своем сервисе.
Мой контроллер:
myApp.controller('MainController', function ($scope, $interval, externalDataService, AnalyzeService) {
$scope.myArray = [];
var size = 10;
var analyze = function () {
if($scope.myArray .length > size) {
AnalyzeService.doSomething();
}
};
var analyzeData = function () {
externalDataService.getData().then(function (data) {
$scope.faceReaderData.push(data);
analyze();
});
};
$interval(analyzeData , 2000);
});
Мой сервис:
myApp.service('AnalyzeService', function () {
this.doSomething = function () {
//here i want array access
}
});
Вы не хотите этого делать, поскольку это заставляет ваше обслуживание зависеть от вашего контроллера, что очень нежелательно. Вместо этого добавьте массив в качестве параметра к вашему doSomething
:
//Appending 1,2,3 to the given array
function doSomething(someArray) {
return someArray.concat(['1', '2', '3']);
}
Таким образом, ваш сервис не зависит от вашего контроллера вообще, отделяя вашу бизнес-логику от вашего контроллера.