$ q函数没有返回任何值

时间:2015-11-01 23:26:37

标签: angularjs parse-platform

当我运行此代码时,我希望收到一个可以在我的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)}]);

1 个答案:

答案 0 :(得分:1)

您不能以这种方式直接获得结果。作业是同步的。尝试这样的事情:

app.controller('NameController', ['$scope', '$q', function($scope, $q) {
   $scope.names = [];
   playerNames($q).then(function(results) {
      $scope.names = results;
   });
}]);