0

Я пытаюсь сделать мой угловой контроллер более универсальным в том, как он обрабатывает массив объектов JSON.AngularJS JSON scope

В настоящее время у меня есть следующие определены:

$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 динамически через область видимости.

Markup

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

Update

Вы могли бы передать Color переменную динамически через другой переменной области действия, как $scope.color = 'Color' поэтому нг-повтор будет

Html

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

Я думаю, что это было бы лучше для моей usecase, как я хочу указать имя: значение, однако в тот момент, когда я меняюсь, я, похоже, ничего не получаю? – Poiro

+0

@Poiro посмотреть обновленный –

+0

@Poiro это вам помогло? –