AngularJS ng-attr-不起作用

时间:2017-01-23 17:36:56

标签: angularjs

我需要动态设置选择标记的多个属性。

根据此文件: 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标签。

即使我使用

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

知道为什么吗?

感谢。

1 个答案:

答案 0 :(得分:2)

Web浏览器有时会对它们认为对属性有效的值感到挑剔。 ng-attr用于绑定arbitrary attributesselect不是&#34;知道&#34; ng-attr-multiple正在尝试设置multiple属性,它只是直接对多个做出反应。

相反,我建议你编写一个包装器指令,它将multiple属性添加到你的元素中。

有关详细信息,请参阅此文档链接:

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

问题链接:

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

&#13;
&#13;
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);
          }
        }
      }
    }
  }

})
&#13;
<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>
&#13;
&#13;
&#13;