两个指令元素(替换:true)和指令模板中的ng-disabled组合不正确

时间:2017-03-09 01:01:27

标签: javascript angularjs angularjs-directive

在带有replace: true的元素指令上使用ng-disabled会出现,并且在指令模板的根元素上导致角度错误地尝试组合两个禁用ng的条件。

HTML:

<body ng-controller="myCtrl">
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.min.js"></script>
  <my-submit-button ng-disabled="condition1"></my-submit-button>
</body>

JS:

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

app.controller('myCtrl', function($scope) {
  $scope.condition1 = true;
});

app.directive('mySubmitButton', function() {  
  return {
    restrict: 'E',
    replace: true,
    controller: function($scope) {
      $scope.condition2 = false;
    },
    template: '<button type="button" ng-disabled="condition2">My Button</button>'
  };
});

渲染html中的结果:

<button type="button" ng-disabled="condition1 condition2">My Button</button>

注意condition1 condition2之间没有&&

这是问题的jsBin example

这是一个有角度的错误还是我错过了什么?

如果是角度的错误,有没有办法可以更优雅地处理它?将scope: {ngDisabled: '='}添加到指令似乎不会阻止角度自动组合(错误地)condition1和condition2。

另外,如果它是一个有角度的错误,我该在哪里举报?

1 个答案:

答案 0 :(得分:0)

结果显示replace: true已被弃用,因此已知的错误无法修复。或者我从Why is replace deprecated in AngularJS?

收集