У меня есть некоторые данные, состоящие из различных брендов, и каждая бренд имеет вложенный массив (строки), содержащие имена диапазонов:Показать варианты HTML на основе отдельно выбранные параметры с угловой
[
{
"brandName" : "Brand 1",
"ranges" : [
"Range A1",
"Range A2",
"Range A3"
]
},
{
"brand" : "Brand 2",
"ranges" : [
"Range B1",
"Range B2",
"Range B3"
]
},
]
То, что я попытка сделать это отобразить элемент выбора со списком опций, содержащих имена диапазонов, в качестве их значений и innerHTML, на основе ранее выбранного бренда в отдельном элементе select.
Я не уверен, как ориентироваться на выбранный объект бренда, чтобы получить доступ к вложенному массиву, поскольку я пытаюсь сделать это «Угловой способ».
В настоящее время я пытаюсь использовать ngRepeat, но не могу заставить его работать.
В контроллере:
$scope.formData = {
brandData : [
{
"brandName" : "Brand 1",
"ranges" : [
"Range A1",
"Range A2",
"Range A3"
]
},
{
"brandName" : "Brand 2",
"ranges" : [
"Range B1",
"Range B2",
"Range B3"
]
},
],
currentBrand : undefined,
currentRange : undefined
};
И упрощенной разметке:
<select name="currentBrand" ng-model="formData.currentBrand">
<option value="" disabled>Select a brand</option>
<option value="none" selected>None</option>
<option ng-repeat="brand in formData.brandData" value="{{brand.brandName}}">{{brand.brandName}}</option>
</select>
<select name="currentRange" ng-model="formData.currentRange">
<option value="" disabled>Select a range</option>
<option value="none" selected>None</option>
<option ng-repeat="how do I show each range name in the 'ranges' array of the selected brand ????? value="{{rangeName}}">{{rangeName}}</option>
</select>
Есть некоторые подобные вопросы, плавающие вокруг, но я не мог найти какой-либо конкретной к структуры данных, которые у меня есть.
Заранее благодарен!
UPDATE
Благодаря Рохана, я теперь достиг своей первоначальной цели. Тем не менее, я также хотел, чтобы значение каждого элемента option
устанавливалось равным его внутреннемуHTML. Для этого я использовал track by...
особенность ngOptions:
<select name="currentBrand" ng-model="formData.currentBrand" ng-options="brandOption as brandOption.brandName for brandOption in brandOptions track by brandOption.brandName">
<option value="" disabled>Select a brand</option>
</select>
<select name="currentRange" ng-model="formData.currentRange" ng-options="rangeOption for rangeOption in formData.currentBrand.ranges track by rangeOption">
<option value="" disabled>Select a range</option>
</select>
Для рабочего примера, я раздвоенный и обновленный jsfiddle Рохана: http://jsfiddle.net/munkychop/hgzdannz/1/
Это большое спасибо, я посмотрел на ngOptions, но не мог собрать его вместе. Я отдам это, когда вернусь домой. – munkychop
Это отлично работает, хотя небольшая часть, чтобы ответить на этот вопрос, устанавливала значение элементов опции в текущее значение данных. Я достиг этого с помощью «track by ...», и я обновил свой оригинальный вопрос, чтобы показать полную функциональность. – munkychop