Автоматическое обновление выпадающих массивов

#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?