2017-08-17 1 views
0

freqValueに基づいてhtmlからmin、max値を設定する方法。anglejのドロップダウン値に基づいて、入力タイプ=数にmin、maxを設定します。

  1. 場合freqValue = 1、次いで分= 1、最大= ELSE 20
  2. freqValue = 2、次いで分= 1、最大= 45 ELSE
  3. freqValue = 3、次いで分= 1、最大値= 100
  4. 場合
<input type="number" min="0" max="100" ng-model="interval" /> 
<select ng-model="freqValue" ng-options="f.key as f.value for f in freq"> 
</select> 

答えて

1

あなたは、そのキーがためminmax値を記憶するものとして、これらの周波数値とのマップを持つことができますモデルが変更されたときには、という変数であるマップインデックスに基づいて、とmaxの値が再割り当てされます。例えば

コントローラー:

$scope.map = { 
    '1': { min: 1, max: 20 }, 
    '2': { min: 1, max: 45 }, 
    '3': { min: 1, max: 100 }, 
}; 

テンプレート:

<input type="number" 
    min="{{ map[freqValue].min }}" 
    max="{{ map[freqValue].max }}" 
    ng-model="interval" /> 
<select 
    ng-model="freqValue" 
    ng-options="f.key as f.value for f in freq"> 
</select> 
0

この

(function() { 
 
    var app = angular.module('app', []); 
 
    app.controller('main', ['$scope', function($scope) { 
 
    var vm = this; 
 

 
    vm.freq = [{key:1},{key:2},{key:3}] 
 

 
    vm.setMinMax = function() { 
 
     if (vm.freqValue == 1) { 
 
     vm.min = 1; 
 
     vm.max = 20; 
 
     } 
 
     if (vm.freqValue == 2) { 
 
     vm.min = 1; 
 
     vm.max = 45; 
 
     } 
 
     if (vm.freqValue == 3) { 
 
     vm.min = 1; 
 
     vm.max = 100; 
 
     } 
 
    } 
 

 
    }]); 
 
})();
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<html lang="en" ng-app="app"> 
 

 
<body ng-controller="main as vm"> 
 

 
    <select ng-model="vm.freqValue" ng-options="f.key as f.key for f in vm.freq" ng-change="vm.setMinMax()"> 
 
    <option value="">select</option> 
 
</select> 
 
    <input type="number" ng-min="{{vm.min}}" max="{{vm.max}}" ng-model="interval" /> 
 

 
</body> 
 

 
</html>
のように試してみてください

関連する問題