2014-12-10 2 views
0

이상하게 구조화 된 객체가있어서 배열로 변환하려고합니다. 따라서 ng-repeat로 필터를 사용할 수 있습니다.ng-repeat에서 JS 객체를 사용하는 데 어려움이 있습니다.

var sysData = { 
"walkerduct": { 
    "id": 0, 
    "uri": "walkerduct", 
    "name": "Walkerduct", 
    "imageS": "img/callcenter.jpg", 
    "imageL": "img/callcenter.jpg", 
    "copy": "Walkerduct info", 
    "relatedSys": [], 
    "relatedApp": [] 
} 
} 

내가 배열로 변환하려고 내 컨트롤러,

inFloorControllers.controller('ApplCtrl', ['$scope', '$routeParams', 
function ($scope, $routeParams) { 
    //alert("OtherCtrl hit"); 
    $scope.appData = appData; 
    $scope.sysData = sysData; 
    $scope.title = appData.title; 
    $scope.sysArr = []; 
    var hasData = true; 
    var idx = 0; 
    while (hasData) { 
     var data = sysData[idx]; 
     alert("yo"); 
     if (data) { 
      $scope.sysArr.push(data); 
      idx++; 
     } 
     else { 
      hasData = false; 
     } 
    } 
    for (i = 0; i < $scope.sysArr.length; i++) { 
     alert($scope.sysArr[i]); 
    } 
} 
]); 

그리고 마지막으로 내 HTML,

<div ng-repeat="sys in sysArr | limitTo:3"> 
    <a href=#/systems/{{sys.uri}}>{{sys.name}}</a> 
</div> 

나 ': 여기

는 예를 들어 객체입니다 내가 뭘 잘못하고 있는지 보지 못 했어. 심지어는 안 맞아. if(data) ... 고마워.

답변

3

를 제거 : 당신이 IE8에 대한 지원이 필요하면

inFloorControllers.controller('ApplCtrl', ['$scope', '$routeParams', 
function ($scope, $routeParams) { 
    $scope.appData = appData; 
    $scope.sysData = sysData; 
    $scope.title = appData.title; 
    $scope.sysArr = Object.keys($scope.sysData).map(function(key){ 
         return $scope.sysData[key]; 
        }); 
} 
]); 

당신이 polyfill for the map function가 필요합니다.

+1

와우. 마술처럼 일했습니다. 이제 제 필터가 작동합니다. 얼마나 훌륭한 솔루션인가! 많이 가르쳐 줬어. – Xogle

-1

유효한 json이 아닙니다. 이런 식으로, 마지막 쉼표 그냥 Object.keysArray.map과 함께 사용하십시오

{ 
"walkerduct": { 
    "id": 0, 
    "uri": "walkerduct", 
    "name": "Walkerduct", 
    "imageS": "img/callcenter.jpg", 
    "imageL": "img/callcenter.jpg", 
    "copy": "Walkerduct info", 
    "relatedSys": [], 
    "relatedApp": [] 
} 
} 
+0

쉼표를 사용하셨습니까? –

+0

예, 물론 :) – Rinrub

+0

지금 유효합니다. JSON을 잘랐으므로 JSON을 잘라 버렸기 때문에 거기에있었습니다. :) – Xogle

관련 문제