Ich möchte grundsätzlich ein Rechtsklick-Menü erstellen, das Kommentare zu dem angeklickten Element aufzeichnet. Wie mache ich ein Kontextmenü, das sich schließt, wenn ich irgendwo anders klicke, als wenn ich auf die Kontextmenüelemente klicke. Mit dem Code, den ich habe, auch wenn Sie die Elemente anklicken, die zum Kontextmenu gehören, wird es geschlossen.Erstellen eines benutzerdefinierten Kontextmenüs in AngularJs
<div prevent-right-click visible="isVisible">
asd
</div>
<div ng-if="isVisible">
<div class="btn-group-vertical" role="group" aria-label="Vertical button group">
<button type="button" class="btn btn-default">Button</button>
<button type="button" class="btn btn-default">Button</button>
<div class="btn-group" role="group">
<button id="btnGroupVerticalDrop1" type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Dropdown <span class="caret"></span> </button>
<div class="dropdown-menu pull-left newdropdown" aria-labelledby="btnGroupVerticalDrop1">
<form>
<input type="text" placeholder="Enter name"> <br>
<input type="text" placeholder="Enter comment">
</form>
</div>
</div>
</div>
</div>
Hier ist mein AngularJS Code
app.controller('mainCtrl', function($scope, $http, $timeout, $interval, $log){
$scope.isVisible = false;
$scope.$watch('isVisible', function(){
$log.log($scope.isVisible)
})
});
app.directive('preventRightClick', function() {
return {
restrict: 'A',
scope: {
visible: '='
},
link: function($scope, $ele) {
$ele.bind("contextmenu", function(e) {
e.preventDefault();
$scope.$apply(function() {
$scope.visible = true;
})
});
$(document).on('click', '*', function (event) {
$scope.$apply(function() {
$scope.visible = false;
})
})
}
};
})
Mein JsFidde Link: https://jsfiddle.net/ywf7kL5y/