首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AngularJS ng-attr-不起作用

AngularJS ng-attr-不起作用
EN

Stack Overflow用户
提问于 2017-01-23 17:36:56
回答 1查看 5.3K关注 0票数 2

我需要为设置多个属性,动态选择标签。

根据这个文档:https://www.thinkingmedia.ca/2015/03/conditionally-add-a-html-element-attribute-value-in-angularjs/#using-the-ngattr

这应该是可行的:

代码语言:javascript
运行
复制
<select ng-attr-multiple="param.MultiValue">

然后变成

代码语言:javascript
运行
复制
<select multiple>

如果param.MultiValue计算结果为true,则为否则--不使用属性。

不工作,我得到没有多个属性的select标记。

即使我用

代码语言:javascript
运行
复制
<select ng-attr-multiple="true">

知道为什么吗?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-23 18:40:33

Web浏览器有时会挑剔它们认为哪些值对属性有效。ng-attr用于绑定arbitrary attributesselect并不“知道”ng-attr-multiple试图设置multiple属性,它只是直接对多个属性作出反应。

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

有关此问题的更多信息,请参见此文档链接:

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

问题链接:

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

代码语言:javascript
运行
复制
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);
          }
        }
      }
    }
  }

})
代码语言:javascript
运行
复制
<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>

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41812303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档