我试图将一个变量分配给控制器中的变量,该变量来自工厂的承诺,该承诺从URL中提取JSON数据。
webApp = angular.module("App", []);
webApp.factory("getData", function($http) {
var promise;
var getData = {
async: function() {
if ( !promise ) {
promise = $http.get(window.location+"/json").then(function (response) {
return response.data;
});
}
return promise;
}
};
return getData;
});
webApp.controller("View", function(getData, $scope) {
$scope.m = {}
getData.async().then(function(m) {
$scope.m = m;
if ($scope.m == m) {
console.log(true);
}
});
console.log($scope.m);
});
在.then
函数中,返回true - 但$scope.m
始终返回为undefined。
非常感谢任何帮助!
答案 0 :(得分:0)
这是因为promises是异步方法。
这意味着您的async
调用与console.log()行并行执行。因此,在代码的该阶段,不分配变量。
这将打印输出:
webApp.controller("View", function(getData, $scope) {
$scope.m = {}
getData.async().then(function(m) {
$scope.m = m;
console.log(m);
console.log($scope.m);
});
});