javascript - Angular Promise 和 DataService

标签 javascript angularjs angular-promise

我有一个 Angular 数据服务,如下所示:

//dataservice.js
export class DataService {
    constructor($rootScope, $http, $q, $log) {
        $log.info('DataService constructor', this);
        this.$http = $http;
    }
        fetch(url){
        return this.$http.jsonp(url, {params: {callback: 'JSON_CALLBACK'}});
    }

 }

如果我从我的 Controller 中调用它,如下所示:

DataService.fetch('https://passbook-manager.jsapps.io/api/v1/passes');

它返回一个如下所示的 promise :

 Promise {$$state: Object, success: function, error: function, then: function, catch: function…}$$state: Objecterror: function (fn) {success: function (fn)  {__proto__: Object

如何获取 promise 的值并将其返回,以便我可以更新我的范围?

我已经尝试过,但它没有返回任何数据:

DataService.fetch('https://passbook-manager.jsapps.io/api/v1/passes').then(function( val ) {
  $scope.val = val;
  console.log(val) 
});

最佳答案

好的,@dfsq 解释的问题是 API。它不支持 JSONP。将我的代码更改为:

    return this.$http.get(url, {params: {callback: 'JSON_CALLBACK'}});

然后就完美运行了。

关于javascript - Angular Promise 和 DataService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28526316/

相关文章:

javascript - 如何找出触发了哪个事件监听器

javascript - 吞下消息 : Error: Uncaught (in promise): [object Undefined]

带有飞行前请求的 Angularjs $q.all 在 OPTIONS 请求后解析

javascript - 在 angular.js 的选择下拉列表中绑定(bind)值和文本

javascript - 在 ng-repeat 中多次使用 AngularJs 组件

javascript - 尝试将 promise 的 Angular 动态数组发送到表达服务器

javascript - 优化 Javascript 中所有英语单词集合大小的最有效方法是什么?

javascript - 如何通过单击按钮更改 Google map 中心

javascript - 合并我的 CSS 和 JS 文件会破坏代码(在 mac 上工作,而不是在我的服务器上工作)

javascript - 如何解决输入范围 slider 的跨浏览器兼容性问题?