2015-11-01 114 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