Второе поле выбора должно быть заполнено после выбора первого поля выбора - PullRequest
0 голосов
/ 10 мая 2018

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" 
integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous">
<style>
	.margins{
		margin-right:8px;
		margin-bottom: 5px; 
	}
</style>
<body>

<div ng-app="myApp" ng-controller="myCtrl">
<div>
	<h2>LogValues</h2>
    <div class="logval" ng-repeat="num in loop">
	
        <select class="margins" ng-change=populate() class="custom-select"
                id="inputGroupSelect01" ng-model="logType"
                ng-options="x.type for x in logValues[0].parameters">
            <option value="" disabled selected>Select Log Values</option>
        </select>
	
        <select class="margins" ng-model="logVal"
                ng-options="y.val for y in statistics">
            <option value="" disabled selected>Select Statistic</option>      
        </select>		    	

    </div>
	
	

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
   $scope.loop = [1,2,3,4];
    $scope.logValues = 
   [
	{
		"name" : "Log Values",
		"parameters" : 
		[
			
				{"type":"Depth Curve"},{"type":"Conductivity Attenuation -Corr- 400kHz BHI_LWD"},{"type":"Conductivity [CACLMED]"},{"type":"DeepResistivity[RACLMED]"},
				{"type":"DeltaTCompressionalBHI_LWD"},{"type":"Sonic Compressional [DTCED]"},{"type":"Gamma Ray - Apparent BHI_LWD"},{"type":"Gamma Ray [GRAMED]"},
				{"type":"Medium Resistivity [RPCLMED]"},{"type":"Resistivity Attenuation -Corr- 2MHz BHI_LWD"}
			
		]		
		
	}];

$scope.statistics = []
$scope.populate = function() {
$scope.statistics = [
		
		{"val":"None"},{"val":"Mean"},{"val":"Median"},{"val":"Mode"},{"val":"Std Deviation"},{"val":"Variance"},
			{"val":"Mix "},{"val":"Max"}
			
	]
    }
    
});
</script>
</body>
</html>

Вышеприведенный код печатает два поля выбора четыре раза. Требуется не показывать никакой опции во втором окне выбора, пока пользователь не выберет первое поле выбора. У меня естьдостиг этого путем первоначального очищения массива статистики и его заполнения с помощью функции изменения.

Проблема в том, что когда я выбираю опцию в первом поле выбора в строке 1, соответствующая «статистика выбора» заполняется, что нормально, нонаряду с этим также заполняются оставшиеся поля выбора «статистика выбора». Мне нужно, чтобы он был пустым, пока я не выберу соответствующую строку выбора строки. Объяснение может быть запутанным, пожалуйста, проверьте демо для лучшего понимания.Заранее спасибо! Пожалуйста, помогите ..

Я включил Демо

1 Ответ

0 голосов
/ 10 мая 2018

    <!DOCTYPE html>
    <html>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" 
    integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous">
    <style>
    	.margins{
    		margin-right:8px;
    		margin-bottom: 5px; 
    	}
    </style>
    <body>

    <div ng-app="myApp" ng-controller="myCtrl">
    <div>
    	<h2>LogValues</h2>
    	<div class="logval" ng-repeat="num in loop">
    	
    	    <select class="margins"  id="inputGroupSelect01"
                    ng-model="num.logType"
                    ng-options="x.type for x in logValues[0].parameters">
    	        <option value="" disabled selected>Select Log Values</option>
    	    </select>
    		
    	    <select class="margins" ng-disabled="!num.logType"
                    ng-model="logVal"
                    ng-options="y.val for y in statistics">
    	        <option value=""  selected>Select Statistic</option>
    	    </select>		    	
    	</div>
    	
    	

    <script>
    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {
       $scope.loop = [{"stat":1},{"stat":2},{"stat":3},{"stat":4}];
        $scope.logValues = 
       [
    	{
    		"name" : "Log Values",
    		"parameters" : 
    		[
    			
    				{"type":"Depth Curve"},{"type":"Conductivity Attenuation -Corr- 400kHz BHI_LWD"},{"type":"Conductivity [CACLMED]"},{"type":"DeepResistivity[RACLMED]"},
    				{"type":"DeltaTCompressionalBHI_LWD"},{"type":"Sonic Compressional [DTCED]"},{"type":"Gamma Ray - Apparent BHI_LWD"},{"type":"Gamma Ray [GRAMED]"},
    				{"type":"Medium Resistivity [RPCLMED]"},{"type":"Resistivity Attenuation -Corr- 2MHz BHI_LWD"}
    			
    		]		
    		
    	}];

    // $scope.statistics = []
    // $scope.populate = function() {
    $scope.statistics = [
    		
    		{"val":"None"},{"val":"Mean"},{"val":"Median"},{"val":"Mode"},{"val":"Std Deviation"},{"val":"Variance"},
    			{"val":"Mix "},{"val":"Max"}
    			
    	]
        //}

        
    });

    </script>
    </body>
    </html>

Сначала вы должны зациклить объекты вместо чисел в $ scope.loop, чтобы сгенерировать различную область видимости для каждой выбранной модели, одно значение для каждой модели ng, а затем выМожно отключить второе поле выбора в зависимости от значения первого поля выбора.Здесь я отключил второй блок выбора, если модель первого блока выбора не определена. Он будет включен, как только вы выберете значение журнала

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