我有一个显示按钮的指令。 简单示例:
<my-directive></my-directive>
指令内部是HTML,类似于以下内容。 (一旦页面被渲染,这将显示两个按钮。)
<button ng-repeat="option in options">{{option}}</button>
以下是我之前提到的指令的更详细信息:
<my-directive ng-model="someModel" options="[0, 1]" ui-options="['Cat', 'Dog']>
</my-directive>
&GT;&GT;&GT;结果: 2个html按钮。
主要问题:如果符合某个条件,我想停用Dog
按钮。
如果符合条件,我已经尝试有条件地将disabled
指令添加到指令,但是同时禁用了Cat
和Dog
按钮,如下所示:(在指令元素上)
ng-attr-disabled="dogIsbad()"
当然,禁用这两个按钮,因为属性在指令上。如何才能在不修改实际指令的情况下将disabled属性添加到Dog
按钮?
答案 0 :(得分:1)
您可以将该选项作为parasster传递给dogIsbad()并检查该选项是否为dog。
<button ng-repeat="option in options" ng-disabled="dogIsbad(option)">{{option}}</button>
在控制器中
dogIsbad = function(option){ return (option == "Dog");}
答案 1 :(得分:1)
您必须在
等选项中传递它<my-directive
ng-model="someModel"
options="[0, 1]"
ui-options="[{'name': 'Cat', disabled: true}, {name: 'Dog', disabled: false}]>
</my-directive>
然后在按钮显示中使用它
<button ng-repeat="option in options" ng-disabled="option.disabled">{{option.name}}</button>
答案 2 :(得分:1)
angular.module('app', [])
.controller('ctrl', ['$scope', function($scope) {
$scope.options = ['cat', 'dog'];
$scope.dogIsbad = function(option){
return option == 'dog';
}
}])
.directive('myDirective', function() {
return {
scope: {
options: '=',
dogIsbad: '&'
},
template: '<button ng-disabled="dogIsbad({option: option})" ng-repeat="option in options">{{option}}</button>'
};
});
&#13;
<script src="//code.angularjs.org/snapshot/angular.min.js"></script>
<div ng-app='app' ng-controller="ctrl">
<my-directive options="options" dog-isbad='dogIsbad(option)'></my-directive>
</div>
&#13;