Я не знаю, в чем проблема, но я пытаюсь настроить службу, которая делает что-то похожее на это (однако, в гораздо более сложном масштабе) проблема.AngularJS - служебные переменные не определены
В принципе, я хотел бы быть в состоянии сделать что-то вроде
$myService.init().then($myService.print);
и получить вывод о том, Hello world
, однако вместо того, чтобы выход undefined
. Пример:
angular.module('myService', [])
.service('$myService', ['$q',
function($q) {
this.variable = null;
this.init = function() {
return $q(function(resolve, reject) {
this.init = "Hello world";
resolve(null);
});
};
this.print = function() {
alert(this.variable);
};
}
]);
angular.module('app', ['myService']).controller('Controller', function($myService) {
$myService.init().then($myService.print);
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script>
<div ng-app='app' ng-controller='Controller'>...</div>
подсказка: Попробуйте войти 'this' в различных функций, и посмотреть, что получится. – adeneo
и для решения использовать 'bind' или замыкание:' .then (function() {$ myService.print();}); ' – Grundy
@Grundy с использованием' bind' было решением. – Hobbyist