Я пытаюсь отделить функциональность от контроллера и поместить его в сервис, чтобы я мог использовать его в нескольких контроллерах без добавления одинаковых функций в разных контроллерах.
Мой оригинальный контроллер, прежде чем я пытался настроить его службу, работает нормально и выглядит как эта ниже (colorController.js):
colorController.js
(function() {
angular
.module('evolution')
.controller('ColorController', ColorController);
ColorController.$inject = ['$scope', '$http'];
function ColorController($scope, $http){
$scope.range = function(max, min, step){
step = step || 1;
var input = [];
for (var i = max; i >= min; i -= step) input.push(i);
return input;
};
};
})();
И Белье код, который я пытаюсь отделить его с обслуживанием и новым контроллером
rangeService.service.js
(function() {
angular
.module('evolution')
.service('RangeService', RangeService);
function RangeService(){
this.range = function(max, min, step){
step = step || 1;
var input = [];
for (var i = max; i >= min; i -= step) input.push(i);
return input;
};
};
})();
rangeController.js
(function() {
angular
.module('evolution')
.controller('RangeController', RangeController);
RangeController.$inject = ['$scope', '$http', '$log', 'RangeService'];
function RangeController($scope, $http, $log, RangeService){
$scope.range = function() {
$scope.result = RangeService.range();
return $scope.result;
}
console.log($scope.range());
};
})();
выходе выше console.log ($ scope.range); пустой массив []
Если я прохожу некоторый аргумент RangeService, как это:
$scope.result = RangeService.range(100,96);
, то я могу увидеть правильный вывод в браузере.
Теперь мне просто нужно эти аргументы должны быть выполнены в colors.html, как показано на рисунке код:
<div class="color_column_row" ng-repeat="n in range(100,50, 5)">
И ниже HTML-код.
Все, что я изменил здесь от нг-контроллера = "ColorController" в нг-контроллер = "RangeController"
colors.html
<div class="col-xs-12 col-sm-3" id="color_column_white_container" ng-app='evolution' ng-controller="RangeController">
<h1 class="evo-header-5 reverse">Light Translucent Colors</h1>
<div class="color_column_row" ng-repeat="n in range(100,50, 5)">
<div class="color_swatch_bar evo-light-{{ n }}-bg">
<span class="tag">evo-light-{{ n }}</span>
<span class="tag">{{ n }}%</span>
</div>
</div>
</div>