在 Div 上拖动时禁用 ng-Click
Disable ng-Click while Dragging on Div
我已经启用了我的小部件的展开和折叠功能,该小部件已附加到可拖动的 directive.This 工作正常。
问题:
在 ng-click 事件中添加了展开和折叠,因此当用户拖放小部件时,ng-click 也会被触发。我不希望 ng-click 在用户拖动小部件时被触发。
这是我的代码:
HTML:
<div plumb-item ng-repeat="widget in dashboard.widgets" ng-style="{ 'left':widget.left, 'top':widget.top, 'width':widget.width }" data-identifier="{{widget.id}}" resizeable>
<p ng-if="widget.divider">{{widget.chartConfig.title.text}}</p>
<md-card ng-if="!widget.expanded && !widget.divider" ng-click="widget.expanded = !widget.expanded" ng-mouseover="hover = true" ng-mouseout="hover = false">
<md-item layout="row">
<div class="collapsed-row" layout="row" layout-align="start center" flex>
<div class="md-toolbar-tools">
<h3>
<span>{{widget.chartConfig.title.text}}</span>
</h3>
</div>
</div>
</md-item>
</md-card>
<md-card ng-if="widget.expanded && !widget.divider" ng-click="widget.expanded = !widget.expanded">
<div layout="column">
<md-card-content>
<highchart id="{{widget.id}}" config="widget.chartConfig" ></highchart>
</md-card-content>
</div>
</md-card>
</div>
JS:
Draggable.JS
routerApp.directive('draggable', function() {
return {
// A = attribute, E = Element, C = Class and M = HTML Comment
restrict:'A',
//The link function is responsible for registering DOM listeners as well as updating the DOM.
link: function(scope, element, attrs) {
console.log("Let draggable item snap back to previous position");
element.draggable({
// let it go back to its original position
revert:true
});
}
};
});
尝试在你的指令中添加这个
routerApp.directive('draggable', function() {
return {
// A = attribute, E = Element, C = Class and M = HTML Comment
restrict:'A',
//The link function is responsible for registering DOM listeners as well as updating the DOM.
link: function(scope, element, attrs) {
console.log("Let draggable item snap back to previous position");
element.draggable({
stop:function(event,ui) {
console.log("Check if its printing")
event.stopPropagation();
},
// let it go back to its original position
revert:true
});
}
};
});
这会阻止事件的进一步传播,因此它可能会阻止不需要的点击
我制定了一个指令 (alClick),它只是 ng-click 但如果默认情况下按下持续时间超过 750 毫秒,则会取消任何点击。因此,拖动或滑动时不会触发点击事件。
<div al-click="widget.expanded = !widget.expanded"></div>
我已经启用了我的小部件的展开和折叠功能,该小部件已附加到可拖动的 directive.This 工作正常。
问题:
在 ng-click 事件中添加了展开和折叠,因此当用户拖放小部件时,ng-click 也会被触发。我不希望 ng-click 在用户拖动小部件时被触发。
这是我的代码:
HTML:
<div plumb-item ng-repeat="widget in dashboard.widgets" ng-style="{ 'left':widget.left, 'top':widget.top, 'width':widget.width }" data-identifier="{{widget.id}}" resizeable>
<p ng-if="widget.divider">{{widget.chartConfig.title.text}}</p>
<md-card ng-if="!widget.expanded && !widget.divider" ng-click="widget.expanded = !widget.expanded" ng-mouseover="hover = true" ng-mouseout="hover = false">
<md-item layout="row">
<div class="collapsed-row" layout="row" layout-align="start center" flex>
<div class="md-toolbar-tools">
<h3>
<span>{{widget.chartConfig.title.text}}</span>
</h3>
</div>
</div>
</md-item>
</md-card>
<md-card ng-if="widget.expanded && !widget.divider" ng-click="widget.expanded = !widget.expanded">
<div layout="column">
<md-card-content>
<highchart id="{{widget.id}}" config="widget.chartConfig" ></highchart>
</md-card-content>
</div>
</md-card>
</div>
JS:
Draggable.JS
routerApp.directive('draggable', function() {
return {
// A = attribute, E = Element, C = Class and M = HTML Comment
restrict:'A',
//The link function is responsible for registering DOM listeners as well as updating the DOM.
link: function(scope, element, attrs) {
console.log("Let draggable item snap back to previous position");
element.draggable({
// let it go back to its original position
revert:true
});
}
};
});
尝试在你的指令中添加这个
routerApp.directive('draggable', function() {
return {
// A = attribute, E = Element, C = Class and M = HTML Comment
restrict:'A',
//The link function is responsible for registering DOM listeners as well as updating the DOM.
link: function(scope, element, attrs) {
console.log("Let draggable item snap back to previous position");
element.draggable({
stop:function(event,ui) {
console.log("Check if its printing")
event.stopPropagation();
},
// let it go back to its original position
revert:true
});
}
};
});
这会阻止事件的进一步传播,因此它可能会阻止不需要的点击
我制定了一个指令 (alClick),它只是 ng-click 但如果默认情况下按下持续时间超过 750 毫秒,则会取消任何点击。因此,拖动或滑动时不会触发点击事件。
<div al-click="widget.expanded = !widget.expanded"></div>