我的应用中有两个不同的网址。我只想得到两个不同的响应,并希望将它分配给两个不同的对象。这是下面的代码。
> angular.module('App',[]).controller('Ctr',function($scope,http){
> var urls = {
> "data11":"data1.json",
> "data22":"data2.json"
> };
> for(var val in urls){
> console.log(urls[val]);
> http.getData(urls[val]).then(function(resp){
> $scope[val] = resp;
> });
> }
> console.log($scope);
>
> }).factory('http',function($http){
> return{
> getData:function(url){
> console.log("url",url);
> return $http.get(url).then(function(resp){
> return resp;
> });
> }
> }
> });
答案 0 :(得分:1)
问题是,当您执行http回调时,val
为undefined
,因为您的循环已经完成。您需要通过为val
创建新范围来保留http调用块中的val
。例如,您可以使用闭包:
for(var val in urls) {
(function() {
var newVal = val;
http.getData(urls[newVal]).then(function(resp){
$scope[newVal] = resp;
});
})();
}