2017-01-23 87 views
0

我需要設置多個屬性爲請選擇動態標記。AngularJS ng-attr-不起作用

根據此文件: https://www.thinkingmedia.ca/2015/03/conditionally-add-a-html-element-attribute-value-in-angularjs/#using-the-ngattr

這應該工作:

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

,併成爲

<select multiple> 

如果param.MultiValue值爲true,否則 - 不多個屬性。

無法正常工作,無論多少屬性,我都會得到選擇標籤。

即使我用

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

任何想法,爲什麼?

謝謝。

+0

相關:HTTP:/ /stackoverflow.com/questions/31872232/conditionally-add-the-multiple-attribute-to-ui-select –

+0

有幾百個谷歌搜索結果相關,無一解釋爲什麼這不起作用:) – 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 attributes,select不知道ng-attr-multiple正在嘗試設置multiple屬性,它只是直接對多個對象起作用。

相反,我會建議你編寫一個包裝指令,它將爲你的元素添加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