2017-03-09 26 views
0

它对使用replace: true的元素指令以及指令模板的根元素上的ng-disabled显示,导致角度错误地尝试合并两个禁用的条件。对指令元素(替换为true)和指令模板中的ng-disabled进行不正确的组合

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来停止角度。

此外,如果它是一个角度错误,我该在哪里报告?

+0

可能的重复[Explain replace = true in Angular Directives(Deprecated)](http://stackoverflow.com/questions/22497706/explain-replace-true-in-angular-directives-deprecated )。请参阅[AngularJS问题#7636](https://github.com/angular/angular.js/issues/7636)。 – georgeawg

回答