2016-07-15 2 views
1

У меня есть угловой модуль со следующим кодом:Как я могу вызвать угловое обслуживание с контроллера?

angular.module('sampleModule', []) 

.service('myService', [function() { 
    this.showAlert = function() { 
     alert("Hello"); 
    }; 

    this.sum = function (a, b) { 
     return a + b; 
    }; 
}]) 

.controller('SampleCtrl', ['myService', '$scope', function ($scope, myService) { 
    this.doSum = function() { 
     var result = myService.sum(1, 2); 
     alert(result); 
    }; 
}]); 

Когда я призываю doSum я получаю:

TypeError: myService.sum не является функцией

Любые идеи? Благодаря!

ответ

3

Вашего контроллера DI является wrong- обратите внимание на порядок аргументов:

.controller('SampleCtrl', ['$scope', 'myService', function ($scope, myService) { 
    this.doSum = function() { 
     var result = myService.sum(1, 2); 
     alert(result); 
    }; 
}]); 
+0

Я подозреваю, что порядок имеет значение, поскольку «myService» зависит от «$ scope», поэтому myService должен появиться после требуемой $ scope. Это верно? –

+0

Да, это правильно !!! –

+1

Вы абсолютно правы! Благодаря! – OtoLeo

1

Проблему с секвенирование инъекций не правильные. $ scope должен появиться перед myService.

Correct code: 
.controller('SampleCtrl', ['$scope', 'myService', function ($scope, myService) { 
    this.doSum = function() { 
     var result = myService.sum(1, 2); 
     alert(result); 
    }; 
}]); 
Смежные вопросы