angularjsに条件付き属性を追加するにはどうすればよいですか?条件付き追加html属性を追加するには?
たとえば、属性を<select>
に設定するには、コンポーネントのバインディングがtrueに設定されている必要があります。つまり、バインディングが指定されていない場合、複数の属性が私の<select>
に存在すべきではありません。
私が見つけた唯一の解決策はng-ifでした。
angularjsに条件付き属性を追加するにはどうすればよいですか?条件付き追加html属性を追加するには?
たとえば、属性を<select>
に設定するには、コンポーネントのバインディングがtrueに設定されている必要があります。つまり、バインディングが指定されていない場合、複数の属性が私の<select>
に存在すべきではありません。
私が見つけた唯一の解決策はng-ifでした。
ブールcondition
は、あなたがのプロパティmultiple
を処理するために(別名ng-multiple
)ディレクティブを実装することによって、これを達成することができません
<select ng-if="condition" ng-model="some.model" multiple></select>
<select ng-if="!condition" ng-model="some.model"></select>
<select ng-show="condition" ng-model="some.model" multiple></select>
<select ng-hide="condition" ng-model="some.model"></select>
コントローラ、
$scope.condition = true
他に、複数のその後、真である場合select
要素。次のスニペットは、このソリューションを実装しています。しかしmultiple
小道具で選択された値の配列が生成されると、小包でmultiple
とnon-multiple
の間で切り替えるときに問題が発生する可能性があるので、non-multiple
が単一のオブジェクトを生成すると、このdirective
の内部でモデルの状態を制御できます。
angular.module('myApp', [])
.directive('ngMultiple', function() {
return {
require: ['select', '?ngModel'],
restrict: 'A',
scope: {
multiple: '=ngMultiple'
},
link: function (scope, element, attrs, ctrls) {
element.prop('multiple', scope.multiple);
scope.$watch('multiple', function (multiple) {
if(element.prop('multiple') != multiple){
// may be would be convenient change the ngModel
// to [] or {} depending on the scenario
element.prop('multiple', multiple);
}
});
}
};
})
.controller('myController', function ($scope) {
$scope.condition = true;
$scope.myOptions = [];
});
angular.element(document).ready(function() {
angular.bootstrap(document, ['myApp']);
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<div ng-controller="myController">
<label>
<input type="checkbox" ng-model="condition" /> multiple?
</label>
<br>
<select ng-multiple="condition" ng-model="myOptions">
<option>Option 1</option>
<option>Option 2</option>
<option>Option 3</option>
<option>Option 4</option>
<option>Option 5</option>
</select>
<br>
<tt>myOptions: {{ myOptions }}</tt>
</div>
の可能性のある重複した[条件付き角度に属性を適用するための最良の方法は何?](http://stackoverflow.com/questions/15696416/what-is-the-best-条件付きでアトリビュートを適用する) – ksav
ng-if、ng-show ... – Jigar7521
multiple = "{{yourVar}}"で試しましたか? –