2017-03-14 42 views
0

我在$http.get请求中收到了一个对象数组。我做了以下内容:如何从Angular中的节点返回的对象数组中访问元素?

$http.get("/showdata").then(function (response) { 
    var thedata = response.data.category; 
    console.log(thedata); 
    $scope.alldata = response.data; 
    if (thedata === "school") { 
     $scope.category = "SchoolBC"; 
    } else { 
     $scope.category = "Not School"; 
    } 
}); 

我怎么能在响应检查一番,并设置相应的$scope

我得到的回报是:

[ 
    { 
     id: "123456", 
     category: "school", 
     title: "first test" 
    }, 
    { 
     id: "789012", 
     category: "home", 
     title: "second test"   
    } 
] 

在前端,我有:

<ul ng-repeat = "mydata in alldata"> 
    <li>{{mydata.title}}<p>{{category}}</p></li> 
</ul> 
+1

这是一个数组。所以你使用response.data [0]访问它的第一个元素,使用response.data [1]访问它的第二个元素。 –

+1

它不清楚你在问什么,但似乎你需要使用for循环,或forEach(假设你有更多的数据,而不仅仅是这些) –

+0

我怎么能把一个forEach循环放在一个'$ http。得到'? – Somename

回答

1

更新基础上的意见和你的问题的编辑答案。根据条件通过在阵列和覆盖对象属性对象循环:

var app = angular.module("app", []); 
 
app.controller("ctrl", function($scope) { 
 
    var thedata = [ 
 
    { 
 
     id: "123456", 
 
     category: "school", 
 
     title: "first test" 
 
    }, 
 
    { 
 
     id: "789012", 
 
     category: "home", 
 
     title: "second test"   
 
    }, 
 
    { 
 
     id: "789012", 
 
     category: ['home', 'school', 'primary', 'pre-primary', 'test', 'test1', 'test2' ], 
 
     title: "third test"   
 
    } 
 
]; 
 

 
    function overrideObjectValue(data) { 
 
      
 
     angular.forEach(data , function(value, key){ 
 
      
 
      if(typeof value.category === 'object') { 
 
       
 
       if ($.inArray('school', value.category)) { 
 
        data[key].category = "SchoolBC"; 
 
       } else { 
 
        data[key].category = "Not School"; 
 
       } 
 
        
 
      } else { 
 

 
       if (value.category === "school") { 
 
        data[key].category = "SchoolBC"; 
 
       } else { 
 
        data[key].category = "Not School"; 
 
       } 
 

 
      } 
 
     }); 
 
     return data; 
 
    } 
 
    
 
    $scope.alldata = overrideObjectValue(thedata); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 

 
<div ng-app="app" ng-controller="ctrl"> 
 
    <ul ng-repeat = "mydata in alldata"> 
 
    <li>{{mydata.title}}<p>{{mydata.category}}</p></li> 
 
    </ul> 
 
</div>

+0

但是如何使用'$ scope'来获取?编辑的问题。请检查 – Somename

+1

您的意思是只有特定的对象匹配类别“学校”吗? – Yolo

+0

是的,确切地说。我想要做的就是为匹配类别的记录设置不同的'$ scope.category'。 – Somename

相关问题