#html #angularjs
#HTML #angularjs
Вопрос:
У меня есть два выпадающих списка, в которые я передаю два массива из моего файла angularjs. В одном выпадающем списке указаны имена, а в другом раскрывающемся списке — темы. таким образом, при выборе имени из первого выпадающего списка темы, связанные с этим именем, загружаются во второй выпадающий список. Работает правильно. Но если я снова выберу другое имя из первого выпадающего списка вместо отображения только объектов, связанных со вторым выбранным именем, объекты, связанные с первым именем и вторым именем, отображаются во втором выпадающем списке. Я сохраняю эти значения в двух глобальных массивах и передаю их в два выпадающих списка. Как я могу отобразить только связанные значения во втором выпадающем списке?
js
$scope.arrayName = [];
$scope.arraySubj = [];
function1()
{
//assigning values to $scope.arrayName;
}
function2(selectedVal)
{
//assigning values to $scope.Subj;
}
HTML
<body>
<select ng-model="a" ng-options="item for item in arrayName" ng-change="function2(a)">
<select ng-model="b" ng-options="item for item in $scope.Subj">
</body>
Комментарии:
1. Поделитесь кодами, которые вы сделали, чтобы обратиться за помощью.
2. В вашем коде есть синтаксические ошибки, которые, вероятно, отображаются в консоли вашего браузера.
function1() {}
иfunction2(selectedVal){}
оба недопустимы.
Ответ №1:
Насколько я понимаю, всякий раз, когда function2(selectedVal)
вызывается, вам нужно будет сбросить массив subj на пустой. Надеюсь, это должно сработать.
Ответ №2:
Не лучше ли было бы просто использовать встроенную службу фильтрации?
<select ng-model="a" ng-options="name as name in arrayName"></select>
<select ng-model="b" ng-options="item as item in arraySubj | filter: customFilter"></select>
где
$scope.customFilter = function(item, idx, arr) {
return (does item match whatever the criteria is from $scope.a);
}
Вместо того, чтобы перестраивать массив $ scope.subJ всякий раз, когда изменяется $scope.a?