问题
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>
回答1:
I created a directive:
- It should be used in conjunction with
ngIf
. ngIf
should refer to an assignable variable on the scope- For example don't do this:
ng-if='myFunc()'
orng-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>
回答2:
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>
来源:https://stackoverflow.com/questions/21457776/angular-add-ngclick-from-js