【发布时间】:2014-04-23 05:02:04
【问题描述】:
我设计了一个从 url 获取数据并将其返回给控制器的工厂。 在控制器中,我打电话给这家工厂。 我已经使用 $q 来解决承诺。 从控制器调用工厂时,我试图将返回的值分配给范围。 在我尝试访问范围内的值时分配值后,我收到未定义的消息 你能帮我解决这个问题吗
app.factory('barchart', function($http,$q) {
var factory={};
factory.drawChart=function() {
var deferred=$q.defer();
$http({
method: 'GET',
url: 'ActionServlet',
headers: {'Content-Type': 'application/json' },
params: {country: "densityplot"}
})
.success(function (data, status, headers, config) {
deferred.resolve(data);
})
.error(function (data, status, headers, config) {
// something went wrong :(
});
return deferred.promise;
};
return factory;
});
app.controller('mycontroller',function($scope, $http, barchart) {
var promise = barchart.drawChart();
console.log("Promise " + promise);
promise.then(function(data) {
$scope.barChartData = data;
console.log("barchart data " + $scope.barChartData.getSVG());
});
console.log("barchart data " + $scope.barChartData.getSVG());
});
但是当它在范围内时,它会显示数据。 每当我尝试在承诺范围之外打印值时,它都会出错。
【问题讨论】: