在主要范围内,我有一个ng-repeat运行。
<table class="datatable" prevent-right-click visible="isVisible">
<tr ng-repeat="t in templateData">
<td confusedFunction="clickedonname(t)">{{t.templateName}}</td>
<td>{{t.templatePath}}</td>
</tr>
</table>
防止 - 右键单击是一个自定义上下文菜单,其中有一个注释框,它对第一个td元素上的相应右键单击元素进行注释。反正我是否可以编写一个带有重复元素的函数,并传入指令,以便注释可以记录在相应的元素上?此外,防止右键单击具有独立的范围。
这是我的指令代码。
app.directive('preventRightClick', function() {
return {
restrict: 'A',
scope: {
visible: '='
},
link: function($scope, $ele) {
$ele.on('contextmenu', '*', function(e) {
e.preventDefault();
$scope.$apply(function () {
$scope.visible = true;
$('.parented').css({right:50, top:50}).show();
})
e.stopPropagation();
});
$(document).on('click', '*', function (e) {
if ($(e.target).parents('.parented').length > 0) {
}
else{
$('.parented').hide()
$ele.off('contextmenu', '*', function(){
console.log('Context menu off')
})
}
})
$scope.confusedFunction = function(t){
console.log(t.templateName)
console.log('coming from clickedonname')
}
}
};
})
答案 0 :(得分:0)
以下是第二种方式的简单示例:
HTML:
<table class="datatable" prevent-right-click visible="isVisible" foo=current.selected ng-init="current = {}">
<tr ng-repeat="t in templateData">
<td ng-click="current.selected = t">{{t.templateName}}</td>
<td>{{t.templatePath}}</td>
</tr>
</table>
指令JS:
app.directive('preventRightClick', function() {
return {
restrict : "A",
scope: {
foo: '=foo',
},
link : function (scope, element, attrs) {
scope.$watch('foo', function(n) {
// This code will be triggered with the new t in new value on each td click
})
}
};
});