Я заинтересован в создании формы с определенной функцией. Форма будет иметь несколько критериев. Когда будет выполнен критерий, будет отображаться соответствующая цена. В этом случае пользователь имеет возможность выбирать наборы дней, а затем раз. Я ударил камень преткновения в том, что я могу фильтровать время по диапазону дат, но это возвращает массив ("['4:55 pm-5:25',..]). Мне нужен этот массив, который нужно разделить и использовать для нового набора значений параметров. Ниже приведен пример примера изображения. Кроме того, я пытаюсь избежать использования одного ng-repeat внутри другого ng-repeat, поскольку это неприменимо к типу формы выбора. вы пробовали использовать другую функцию и без необходимости использовали ng-repeat = "time in times.times".
JS:
$scope.times = [
{'day': 'Monday & Wednesday', 'dates': ['8/10-8/31', '9/2 - 9/30', '10/5- 10-28'], 'times': ['4:55pm - 5:25pm', '5:40pm - 6:10pm', '6:20pm - 6:50pm'], 'price': '46'},
{'day': 'Tuesday & Thursday', 'dates': ['8/11-8/27'], 'times':['4:55pm - 5:25pm', '5:40pm - 6:10pm', '6:20pm - 6:50pm'], 'price': '39'},
{'day': 'Tuesday & Thursday', 'dates': ['9/1-9/29', '10/1-10/29'], 'times':['4:55pm - 5:25pm', '5:40pm - 6:10pm', '6:20pm - 6:50pm'], 'price': '59'},
{'day': 'Saturday', 'dates': ['9/12 - 11/21 No Class Oct 31'], 'times':['11:00am - 11:30am', '11:35am-12:00pm'], 'price': '65'}
];
$scope.concat = function()
{
var concat = [];
var fullDates = []
for (var z = 0; z<= top.length - 1; z ++)
{
var dates = top[z].dates;
var day = top[z].day;
//return dates;
for(var i = 0; i<=dates.length - 1; i++)
{
//concat.push(day.dates[i]);
concat.push(day + ' ' + dates[i]);
fullDates.push(dates[i])
}
$scope.fullDates = fullDates;
}
return concat;
};
HTML:
<select name="days" id="#preschool" ng-model="selectedgroup">
<option ng-repeat="days in concat() track by $index" value="{{fullDates[$index]}}">
{{days}}
</option>
</select>
Select A Time:
<select name="times" id="times" ng-model="selectedTime">
<option ng-repeat="time in times| filter: {dates: selectedgroup}" value="{{$index}}">
{{time.times}}
</option>
</select>
Я обнаружил, что вы также можете добавить ключ в новый объект, который вы создаете (с помощью функции concat), передавая объект с индексом значения свойства. Таким образом, вам не нужно беспокоиться о переписывании данных JSON. Затем вы можете использовать этот новый индекс с датами для выбора конкретного объекта.
HTML:
<select name="days" id="#preschool" ng-model="selectedgroup">
<option ng-repeat="days in concat() track by $index" value="{{days.index}}">
{{days.day}}
</option>
</select>
Select A Time:
<select name="times2">
<option value="" ng-repeat="time in times[selectedgroup].times">
{{time}}
</option>
JS:
$scope.concat = function()
{
var concat = [];
var fullDates = []
for (var z = 0; z<= top.length - 1; z ++)
{
var dates = top[z].dates;
var day = top[z].day;
//return dates;
for(var i = 0; i<=dates.length - 1; i++)
{
concat.push({'day': day + ' ' + dates[i] , 'index':z});
}
}
return concat;
};
});
<select>
вы должны использоватьng-options
.