我正在尝试使用角度工厂返回从soundcloud get请求中获取的数据,以便我可以在控制器中使用该数据。
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)
});
有没有办法等到数据加载完毕?
答案 0 :(得分: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;
});