ng-disable 在 SVG 元素中不起作用

Posted

技术标签:

【中文标题】ng-disable 在 SVG 元素中不起作用【英文标题】:ng-disable doesn't work within SVG element 【发布时间】:2018-06-15 10:57:51 【问题描述】:

我正在研究一个 angularjs 指令,其中一旦单击一次圆形元素就需要禁用它。 ng-click 事件按预期工作,但 ng-disable 不起作用。我可以看到在html中添加了禁用的类,但是点击事件仍然被触发。

有什么想法吗?

<svg  >
      <circle ng-disabled="disableme" ng-click="clickme()" ng-init="count=0" cx="50" cy="50" r="40" stroke="green" stroke- fill="yellow" />
    </svg>

app.controller('MainCtrl', function($scope) 
  $scope.name = 'World';
  $scope.clickme = function () 
    $scope.count=$scope.count+1;
    $scope.disableme = true;
  ;

http://plnkr.co/edit/dK07QfKoA9qOrNsdlypE?p=preview

【问题讨论】:

【参考方案1】:

ng-disabled 不适用于 svg。或者,您可以使用ng-class 来完成此操作

.disable 
     pointer-events: none;
     opacity: 0.5; 
 

ng-class 添加到svg 元素

 <svg    ng-class="'disable': disableme">
      <circle ng-click="clickme()" ng-init="count=0" cx="50" cy="50" r="40" stroke="green" stroke- fill="yellow" />
    </svg>

Demo

【讨论】:

以上是关于ng-disable 在 SVG 元素中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

SVG 元素的 CSS 动画在 Chrome 中不起作用

SVG 的 tabIndex 在 IE 和 React 中不起作用

CSS 翻译在 SVG g 上的 IE11 中不起作用

SVG transform="rotate(180)" 在 Safari 11 中不起作用

链接中的 SVG 跨度在 IE 中不起作用

为啥带有 SVG 的 CSS 剪辑路径在 Safari 中不起作用?