Попытка получить простой случайный генератор с использованием угловых сервисов между контроллерами. Так далеко:
JS. ФАЙЛ
var myServiceModule = angular.module('myServiceModule',[]);
myServiceModule.controller('SecondController',['$scope','randomizer', function($scope,randomizer){
$scope.initialNumber = 0;
console.log('Initial number in second controller: ' + $scope.initialNumber);
$scope.generateRandom = function(rng){
console.log('called w/ ' + rng );
$scope.initialNumber = randomizer.genRan(rng);
console.log('Randomed: ' + $scope.initialNumber);
}
}]);
myServiceModule.service('randomizer',[function(range){
this.genRan = function(){
console.log('inside genRan');
return (Math.floor(Math.random() * range) + 1 );
}
}]);
Файл HTML
<div id="second" ng-controller="SecondController">
<label>Press button to Generate a random number between 1-100:</label>
<button ng-click="generateRandom(100);">Generate</button>
</div>
Должно быть передано значение, когда я вызываю службу правильно? Вместо этого я продолжаю получать NaN для значения при вызове функции службы (.genRan). Я новичок в сервисах, функция называется правильно, но почему это не значение возвращается контроллеру?
Похоже, что range
должен быть определен как параметр в функции genRan
, попробуйте следующее:
myServiceModule.service('randomizer', [function() {
this.genRan = function(range) {
console.log('inside genRan');
return (Math.floor(Math.random() * range) + 1 );
}
}]);
Вы пропустили передачу диапазона, который передается службе внутри функции this.genRan, пожалуйста, измените свой код и передайте диапазон следующим образом:
myServiceModule.service('randomizer',[function(range){
this.genRan = function(range){
console.log('inside genRan');
console.log(range);
return (Math.floor(Math.random() * range) + 1 );
}
}]);
range
, просто она не определена. Это место для параметров впрыска. Например, вы можете добавить сервис под названием range.