Как изменить `<options>` в элементах `<select>` в формах AngularJS - PullRequest
1 голос
/ 20 мая 2019

Я работаю над чем-то, что требует использования различных опций для разных вариантов выбора, таких как список в формах.

Например: если я выберу DR9 в поле Система, он должен показать только 100 400 500 клиентов.то же самое для QR9 - только 400 и 500.

Но в моем случае, он показывает (100 400 500 400 500) многократно.

Вот мой код.

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<!DOCTYPE html>
 <html>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
    <body>
    
    <div ng-app="">
    	Password Reset
      <form>
        <br><label>System:</label> 
    	<select ng-model="myVar">
    		<option value = "DR9">DR9</option>
    		<option value = "QR9">QR9</option>
    		<option value = "PR3">PR3</option>
    	</select>
    	<br><br>
    	<label>Client:</label>
    	<select>
    		<div ng-switch="myVar">
    			<div ng-switch-when="DR9">
    				<option>100</option>
    				<option>400</option>
    				<option>500</option>
    			</div>
    			<div ng-switch-when="QR9">
    				<option>400</option>
    				<option>500</option>
    			</div>
    		</div>
    	</select>
    	</form>
     </div>
    </body>
</html>

Ответы [ 2 ]

1 голос
/ 20 мая 2019

Вы не можете применить ng-switch к div с options, вместо этого добавить ng-switch к div и применить ng-switch-when к select

    
    <!DOCTYPE html>
    <html>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
    <body>
<div ng-app="">
	Password Reset
  <form>
    <br><label>System:</label> 
	<select ng-model="myVar">
		<option value = "DR9">DR9</option>
		<option value = "QR9">QR9</option>
		<option value = "PR3">PR3</option>
	</select>
	<br><br>
	<label>Client:</label>
    <div ng-switch="myVar">
    <select ng-switch-when="DR9">
				<option>100</option>
				<option>400</option>
				<option>500</option>		
	</select>
     <select ng-switch-when="QR9">
					<option>400</option>
				<option>500</option>
	</select>
      <select ng-switch-default>
				<option>100</option>
				<option>400</option>
				<option>500</option>		
	</select>
    </div>

    	</form>
     </div>
    </body>
    </html>
0 голосов
/ 20 мая 2019

Шаблон можно упростить с помощью директивы ng-options:

angular.module("app",[])
.controller("ctrl", function($scope) {
    $scope.myVar = "PR3";
    $scope.otherOptions = otherOptions("PR3");
    $scope.updateOtherOptions = function(myVar) {
        $scope.otherOptions = otherOptions(myVar);
    };
    
    function otherOptions(myVar) {
       switch (myVar) {
           case "DR9":  return [100,400,500];
           case "QR9":  return [400,500];
           default: return [100,400,500];
       };
    };
})
<!DOCTYPE html>
<html>
<script src="//unpkg.com/angular/angular.js"></script>
<body>
<div ng-app="app" ng-controller="ctrl">
  Password Reset
  <form>
    <br>
    <label>System:</label> 
    <select ng-model="myVar" ng-change="updateOtherOptions(myVar)">
        <option value = "DR9">DR9</option>
        <option value = "QR9">QR9</option>
        <option value = "PR3">PR3</option>
    </select>
    <br>
    Client options={{otherOptions}}
    <br>
    <label>Client:</label>
    <select ng-model="otherSel" ng-options="sel for sel in otherOptions">
        <option value="">Select...</option>
    </select>

  </form>
</body>
</html>

Атрибут ngOptions можно использовать для динамического создания списка элементов <option> для элемента <select> с использованием массива или объекта, полученного путем вычисления выражения понимания ngOptions.

Когда выбран элемент в меню <select>, элемент массива или свойство объекта, представленное выбранной опцией, будут привязаны к модели, определенной директивой ngModel.

При желании в элемент <select> может быть вложен один жестко закодированный элемент <option> со значением, установленным в пустую строку. Затем этот элемент будет представлять параметр null или «не выбран».

Для получения дополнительной информации см.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...