当我运行此代码时,我希望收到一个可以在我的html中使用的名称列表。看起来我的功能根本就没有返回任何东西,我无法弄清楚为什么。我需要一些关于在不属于控制器函数的函数上使用$ q的正确语法的一些指示。
function playerNames($q) {
Parse.$ = jQuery;
Parse.initialize("mykey", "mykey");
var namesdfd = $q.defer();
var names = new Array();
var GameScore = Parse.Object.extend("GameScore");
var query = new Parse.Query(GameScore);
query.find({
success: function (results) {
for (var i in results) {
var name = results[i].get("playerName");
names.push(name);
}
namesdfd.resolve(names);
},
error: function (error) {
namesdfd.reject(data);
}
});
return namesdfd.promise
.then(function (results) {
alert("Results.." + results[1]);
return results;
})
.catch(function (error) {
alert(error.message);
});
};
app.controller('NameController', ['$scope', '$q', function($scope, $q) {$scope.names = playerNames($q)}]);
答案 0 :(得分:1)
您不能以这种方式直接获得结果。作业是同步的。尝试这样的事情:
app.controller('NameController', ['$scope', '$q', function($scope, $q) {
$scope.names = [];
playerNames($q).then(function(results) {
$scope.names = results;
});
}]);