【问题标题】:Angular factory not returning data from Soundcloud (SC.get) requestAngular 工厂未从 Soundcloud(SC.get)请求返回数据
【发布时间】:2013-09-17 01:09:26
【问题描述】:

我正在尝试使用角度工厂返回从 soundcloud 获取请求中获取的数据,以便我可以在控制器中使用该数据。

app.factory('soundcloud', function() {
    SC.initialize({
        client_id: 'd977aa793080e7656a3b73f35a27406f',
        redirect_uri: 'http://soundcloud.dev/soundcloud.html'
    });
    var data;
    SC.get('/users/kavverhouzer', function(data) {
        data = data;
    });
    return data;
});

当我尝试在控制器中记录数据时,我得到“未定义”。这是控制器:

app.controller('AppCtrl', function($scope, soundcloud) {
    console.log(soundcloud)
});

有没有办法等到数据加载完毕?

【问题讨论】:

    标签: javascript angularjs xmlhttprequest soundcloud


    【解决方案1】:

    查看$q

    这将建立一个承诺。

    编辑:

    可能是这样的:

    app.factory('soundcloud', function($q) {
        var deferred = $q.defer();
        SC.initialize({
            client_id: 'd977aa793080e7656a3b73f35a27406f',
            redirect_uri: 'http://soundcloud.dev/soundcloud.html'
        });
    
        SC.get('/users/kavverhouzer', function(data) {
           deferred.resolve( data);
        });
        return deferred.promise;
    });
    

    【讨论】:

    • 我正在阅读文档 atm,谢谢。但是当尝试你给我的代码时,它给了我一个你可以在这里看到的对象:j.blck.lv/image/1w0g0f170i3t,我该怎么办?
    • 对象是响应。阅读 Promise 的范式,当你赶上时,它会为你节省一天的时间。
    • 提供更多帮助。返回的对象,你可以做一个`.then(function(data){ //Do stuff with data. })
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-15
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多