Angularjs ngClick和ngDisabled在模板化锚标记上

Angularjs ngClick和ngDisabled在模板化锚标记上,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我正在执行以下指令: module.directive('myButton',function(){ var指令={ 编译:编译, 限制:'E', 范围:{ 类型:“@”, 单击“&”, 已禁用:“@” }, 模板:“”, 转移:对 }; 函数编译(元素、属性){ if(typeof attributes.click=='undefined')attributes.click=function(){}; if(typeof attributes.disabled=='undefined')at

我正在执行以下指令:

module.directive('myButton',function(){
var指令={
编译:编译,
限制:'E',
范围:{
类型:“@”,
单击“&”,
已禁用:“@”
},
模板:“”,
转移:对
};
函数编译(元素、属性){
if(typeof attributes.click=='undefined')attributes.click=function(){};
if(typeof attributes.disabled=='undefined')attributes.disabled=false;
}
返回指令;
});
我在一页上看到了一些像这样的假人:

测试A
我似乎无法让按钮的点击和禁用功能正常工作(至少不能同时工作)。我设计了锚定标签的样式,使其看起来像一个按钮。锚定标记不受
disabled
属性的影响,因此
ngClick
必须检查是否应该触发


如何使单击和禁用的功能按预期工作?

您可以通过在其上设置
&
条件而不是
|
来实现这一点。基本上,如果禁用标志为
true
,则
ng单击
表达式将不会进一步求值。如果为false,则将调用
单击
方法。请看附件中的plunkr示例

data-ng-click="!disabled && click()"

禁用:'@'
更改为
禁用:'='


只读参数(
'@'
)将作为字符串传入,而与分配给参数的变量类型无关。要使用布尔值;一个双向参数(
“=”
)保持该类型。

您的示例没有使用指令。你能把它扩大到更接近我的问题吗?为什么
&&
能起作用,但不能
|
?@ricksmt你没看过plunkr吗?是的。您不使用指令,只使用控制器和默认范围。
<my-button type="1a" click="alert('Button 1a works!')" disabled="false">Test A</my-button>
data-ng-click="!disabled && click()"