Я пытаюсь показать результат обещания в представлении, но я получаю это исключение. Другие случаи этого исключения, которые я нашел в Google/SO, вызваны ошибками, которые я не вижу в своем коде.Угловые обещания - не могу прочитать свойство затем неопределенного
Я проверял, что использую обещания, я разрешаю обещание внутри функции, переданной в $ timeout, я возвращаю обещание функции getData(), а не функцию, которая разрешает обещание.
Заранее спасибо.
Смотрят
<html ng-app="controller" ng-controller="MyController as controller">
<head>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.16/angular.min.js"></script>
<script type="text/javascript" src="controller.js"></script>
<script type="text/javascript" src="services.js"></script>
</head>
<body>
{{data}}
</body>
</html>
Controller (controller.js)
angular.module('controller', ['services'])
.controller('MyController', ['MyService', function(MyService) {
MyService.getData().then(function(data) {
$scope.data = data;
});
}]);
Service (services.js)
angular.module('services', [])
.factory('MyService', function($q, $timeout){
var getData = function getData() {
var deferred = $q.defer;
$timeout(function() {
deferred.resolve('Foo');
}, 5000);
return deferred.promise;
};
return {
getData: getData
};
});
Исключение трассировки стека
TypeError: Cannot read property 'then' of undefined
at new <anonymous> (controller.js:5)
at Object.e [as invoke] (angular.js:4219)
at $get.x.instance (angular.js:8525)
at angular.js:7771
at q (angular.js:334)
at M (angular.js:7770)
at g (angular.js:7149)
at angular.js:7028
at angular.js:1460
Thanks. Я реализовал пример, который я нашел, и они совершили ту же ошибку. – AfterWorkGuinness
@AfterWorkGuinness легко пропустить. Но вы всегда можете перекрестно проверить путем отладки/ведения журнала консоли. – PSL
такой же ошибка я сделал ,, спасибо! – Sid