2015-11-01 118 views
-1

当我运行这段代码时,我期待收到一个我可以在我的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; 
    }); 
}]); 
+0

这个伎俩! – Mardymar