javascript - Controller AngularJs 中的服务注入(inject)

标签 javascript angularjs angular-promise

您好,我的服务代码是:

angular.module('lucho1App').factory('ApiExample', ['$http', '$q', function($http, $q) {
    return {
        promiseToHaveData: function() {
            return $http.get('http://data.colorado.gov/resource/4ykn-tg5h.json').then(function(response) {
                var result = response.data;
                console.log(result);
                return result;
            }, function(response) {
                console.log('Error has ocurred');
            });
        }
    };
}]);

我的 Controller 是:

angular.module('lucho1App')
  .controller('MainCtrl',['$scope', 'ApiExample',function MainCtrl($scope,ApiExample) {

    $scope.apiExampl=ApiExample.promiseToHaveData();
    console.log($scope.apiExampl);
}]);

服务中的console.log显示输出,这意味着我的请求成功,但在 Controller 中$scope.apiExampl未定义我的错误在哪里?

最佳答案

Promise 是异步的,因此它会在稍后解决,并且 then 中的函数将在那一刻被调用。回调中的返回允许更改传递给下一个 then 调用的对象,因为 Promise 是可链接的对象。

首先,您必须在服务中返回 Promise 对象:

return $http.get(...);

第二次更改您的 Controller ,如下所示:

ApiExample.promiseToHaveData().then(function(data){
    $scope.apiExampl=data;
});

请注意,我在这里执行=data,因为在您的服务中,您已经从响应中提取了数据对象

关于javascript - Controller AngularJs 中的服务注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37658565/

相关文章:

javascript - AngularJS 和 Typescript 的 Promise

javascript - 等待一个 Promise 被解决来解决 Angular.js 中的另一个 Promise

javascript - 如何使用正则表达式和变异元音获取字符串的所有匹配项 - 标签

javascript - 使用 Jasmine 和 Karma 测试 Ionic - 未捕获的 ReferenceError : angular is not defined

angularjs - Forms-Angular,自定义指令字段如何影响完整记录的 $pristine 状态?

javascript - 如何从异步 API 返回 AngularJS promise

javascript - 调整窗口大小时如何触发函数?

javascript - 如何在 JavaScript 中比较数组?

javascript - sce trust as html 不打印 HTML

javascript - AngularJS - 无法获得 $q.reject 和工作