Reputation: 99
I am developing small web page for mobile devices with Angular. I want to toggle click listener for whole page like
$('.page').on('click',...);
$('.page').off('click',...);
but in Angular way. And I don't want to use ng-Click
with some conditions because most of the time the click should not work, it is just for error handling. Is it possible or I need to user pure js/jQuery?
Panel HTML:
<div class="alert error" ng-show="errorMessage">
<div class="alert-text">{{ errorMessage }}</div>
</div>
Upvotes: 3
Views: 1411
Reputation: 32367
ngIf
.ngIf
should refer to an assignable variable on the scope ng-if='myFunc()'
or ng-if='var1 || var2'
here is a plunker: http://plnkr.co/edit/fmNH2PbRrruRqGFYiui1?p=preview
Directive:
app.directive('errorBox', function($document, $parse){
return {
link: function(scope,elm,attrs) {
var clickHandler = function(){
scope.$apply(function(){
$parse(attrs.ngIf).assign(scope.$parent,'')
})
$document.off('click', clickHandler);
};
$document.on('click', clickHandler)
}
}
});
html:
<div ng-if="errorMessage" error-box class="alert error">
<div class="alert-text">{{ errorMessage }}</div>
</div>
Upvotes: 2
Reputation: 16368
You can add a $scope variable that keeps track if it's 'allowed' to click. Then you can do something like this
<div ng-click="isDisabled || yourAction()"></div>
Upvotes: 0