0

我想讓我的Angular控制器在處理對象的JSON數組的方式上更通用。AngularJS JSON範圍

目前我有以下定義:

$scope.Data = []; 

和我拉跨數據在我的模板,如:

ng-repeat="item in Data.category[3].values 

我的JSON的樣子:

"category": [{ 
"name": "cat1", 
"behaviour": "normal", 
"selected": 0, 
"values": [{ 
    "label": "define", 
    "count": 6 
}] 
}, { 
"name": "cat2", 
"behaviour": "normal", 
"selected": 0, 
"values": [{ 
    "label": "type", 
    "count": 6 
}] 
}, { 
"name": "Company", 
"behaviour": "multi-select", 
"selected": 0, 
"values": [{ 
    "label": "VW", 
    "count": 4 
}, { 
    "label": "Renault", 
    "count": 1 
}, { 
    "label": "Fiat", 
    "count": 1 
}] 
}, { 
"name": "Make", 
"behaviour": "multi-select", 
"selected": 0, 
"values": [{ 
    "label": "Gold", 
    "count": 3 
}] 
}, { 
"name": "Color", 
"behaviour": "normal", 
"selected": 0, 
"values": [{ 
    "label": "White", 
    "count": 3 
}, { 
    "label": "Blue", 
    "count": 2 
}, { 
    "label": "Green", 
    "count": 1 
}] 
}] 

我試圖去做的不是訪問特定的索引:

Data.category[3].values 

我想通過類環和搶索引項的列表,以便我可以用這樣的:

Data.category[Color].values 

,其中顏色是在列表中找到,我可以帶回值那個特定的元素,可能嗎?

+0

顏色是屬性的值還是屬於類別? – carton

+0

因此,如果我理解正確,您希望按照您現在對類別所做的操作進行操作,例如使它像這樣:Data.category.color.values? – Guinn

+0

瞭解如何使用'Array.prototype.filter()' – charlietfl

回答

0

我不知道這是你想要的,但如果你需要在顏色的功能,顯示屬性值,你可以在你的控制器做到這一點:

 $scope.dataToDisplay = []; 
     for(var i = 0; i < $scope.Data.length ; i++){ 
    { 
     if($scope.Data.color == 'yourcolor') { 
       $scope.dataToDisplay.push($scope.Data[i].values) 
      } 
     } 

而在你的HTML你只顯示dataToDisplay

1

您可以使用filter代替,也可以通過範圍動態傳遞Color值。

標記

ng-repeat="item in (Data.category| {name: 'Color'}: true)[0].values 

更新

你可以動態傳遞Color變量通過另一個作用域變量,像$scope.color = 'Color'所以NG重複將成爲

的Html

ng-repeat="item in (Data.category| {name: color}: true)[0].values 
+0

我認爲這將是我的用例最好的,因爲我想指定name:value,但是現在一旦我改變了,我似乎沒有得到任何回報? – Poiro

+0

@Poiro看看更新 –

+0

@Poiro它幫助你嗎? –