我有一个像这样的元素
<a class='btn' ng-click="alert('clicked')"></a>
在js
$scope.alert=(item)=>{alert(item)};
我测试过使用过ng-disabled但是没有用。 这是我的HTML 这是我的指示
我的项目中有很多元素,所以我想写一个像ng-disable这样的指令如何编写它?
答案 0 :(得分:1)
将$ event对象传递给函数,你可以这样做,
<a class='btn' ng-click="alert($event,clicked)"></a>
和控制器
$scope.alert = function ($event,clicked) {
if (you want to stop) {
$event.stopPropagation();
}
};
答案 1 :(得分:0)
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.alert=(item)=>{alert(item)}
$scope.click = false
$scope.click_two = true
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js"></script>
<body ng-app="myApp">
<div ng-controller="MyCtrl">
<a style=" color: red" ng-click="!click||alert('Test')">Click on this and this will not alert</a> <br> <br>
<a style=" color: blue" ng-click="!click_two||alert('Test')">Click on this and this Will alert</a>
</div>
</body>
&#13;
当click的值为true时,将调用该函数,否则将不会调用
请点击两个锚标记以找出差异
在你的控制器中,
$scope.click = false;
答案 2 :(得分:0)
不要在ng-disabled
指令中使用插值。
<!--ERRONEOUS -->
<button ng-click="clicks=clicks+1" ng-disabled="{{checked}}">Button</button>
<!--CORRECT -->
<button ng-click="clicks=clicks+1" ng-disabled="checked">Button</button>
使用插值(双花括号)将布尔值转换为字符串。字符串&#34; false&#34;是真的。这是一个JavaScript的怪癖。 不要在ng-disabled
指令中使用插值。
答案 3 :(得分:0)
我认为这是解决问题的方法,谢谢大家帮我解决问题〜
.directive('a', function() {
return {
restrict: "E",
replace: true,
scope: {
},
link: function(scope, elem, attr) {
if (attr['ngDisabled']) {
elem.unbind('click')
}
}
}
})