2017-01-23 10 views
0

複数の属性をに設定する必要があります。タグを動的に選択してください。AngularJS ng-attr-は機能していません

このドキュメントによると:

<select ng-attr-multiple="param.MultiValue"> 

をしてparam.MultiValueが真と評価された場合にそうでない場合は、

<select multiple> 

になる - 複数属性なし: https://www.thinkingmedia.ca/2015/03/conditionally-add-a-html-element-attribute-value-in-angularjs/#using-the-ngattr

これは動作するはずです。

機能しません。複数の属性を持たないselectタグを取得します。

私は

<select ng-attr-multiple="true"> 

を使用する場合でも任意のアイデアなぜですか?

ありがとうございました。

+0

関連します。http:/ /stackoverflow.com/questions/31872232/conditionally-add-the-multiple-attribute-to-ui-select –

+0

何百ものGoogle結果が関連していますが、なぜこれが機能していないのか説明していません:) – monstro

+0

角度補間は使用できませんブール値の属性。こちらをご覧ください:https://docs.angularjs.org/guide/interpolation @mikeyaworskiが投稿したリンクまたはこのリンクを使用することをお勧めします:http://stackoverflow.com/questions/24043732/conditional-multiple-attribute-in -input-type-file-with-angularjs – JGibbers

答えて

2

Webブラウザーは、属性に対して有効と考えられる値について、時には気になります。 ng-attrはバインド用ですarbitrary attributesselectng-attr-multiplemultiple属性を設定しようとしていることを「認識」していません。

代わりに、multiple属性を要素に追加するラッパーディレクティブを記述することをお勧めします。

https://docs.angularjs.org/guide/interpolation

問題リンク:この方法の詳細については

このドキュメントのリンクを参照してください

https://github.com/angular/angular.js/issues/13570

var mymodule = angular.module('myApp', []); 
 

 
function sampleController($scope, $timeout) { 
 
    $scope.addAttribute = true; 
 
} 
 

 
mymodule.controller('sampleController', sampleController) 
 

 
.directive('multipleAttr', function() { 
 
    return { 
 
    'restrict': 'A', 
 
    'compile': function() { 
 
     return { 
 
     'pre': function($s, $el, attrs) { 
 
      if (attrs.multipleAttr === 'true' || attrs.multipleAttr === true) { 
 
      $el.attr('multiple', true); 
 
      } 
 
     } 
 
     } 
 
    } 
 
    } 
 

 
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp"> 
 
    <div ng-controller="sampleController"> 
 
    <select multiple-attr="{{addAttribute}}"> 
 
     <option>Hi</option> 
 
     <option>Hello</option> 
 
     <option>Hey</option> 
 
    </select> 
 
    </div> 
 
</div>

+0

ありがとう、それは説明します。カスタム属性ディレクティブを代わりに使用します。 – monstro

関連する問題