У меня есть вопрос AngularJS, который сводит меня с ума. У меня есть служба, которая выглядит следующим образом (это пример для иллюстрации вопроса)
var app = angular.module('test-module');
app.service('ToolService', function($timeout){
this.doSomething = function() {
console.log("y u no referenced as method?!?");
}
this.runTimeoutExample = function(){
$timeout(function(){
this.doSomething();
}, 1000);
}
})
Мой контроллер выглядит следующим образом:
var app = angular.module('test-module', []);
var ctrl = app.controller('main-controller', function($scope, ToolService) {
$scope.somethingWasClicked = function() {
ToolService.runTimeoutExample();
}
});
Вот вопрос, когда кнопка, которая была нажата, что звонки $ scope.somethingWasClicked пересылает вызов службе, и я получаю сообщение об ошибке «this.doSomething не является функцией».
Почему? И как мне это исправить? Мне нелегко найти способ, чтобы мой код работал таким образом, не добавляя лишнюю логику в мой контроллер.
Заранее спасибо за вашу помощь
Пожалуйста, ознакомьтесь с http://stackoverflow.com/questions/20279484/how-to-access-the-correct-this-context-inside-a-callback – charlietfl