угловая переменная доступа JS в сервисе, но то же приложение

0

Как я могу получить доступ к свойству контроллера в службе?

В моем случае это массив, который я хочу изменить в своем сервисе.

Мой контроллер:

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
    }
});
  • 3
    Вы можете просто передать массив в вашу сервисную функцию в качестве параметра.
  • 0
    В моем случае я хочу внести изменения в массив, как удалить первые 10 объектов. Если я передаю массив в службу в качестве параметра, я должен вернуть его и установить в качестве нового массива. И это то, что я не хочу
Показать ещё 1 комментарий
Теги:

1 ответ

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

Вы не хотите этого делать, поскольку это заставляет ваше обслуживание зависеть от вашего контроллера, что очень нежелательно. Вместо этого добавьте массив в качестве параметра к вашему doSomething:

//Appending 1,2,3 to the given array
function doSomething(someArray) {
    return someArray.concat(['1', '2', '3']);
}

Таким образом, ваш сервис не зависит от вашего контроллера вообще, отделяя вашу бизнес-логику от вашего контроллера.

  • 0
    Хорошо. спасибо за Ваш ответ

Ещё вопросы

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