2015-04-23 76 views
2

拖着我已經啓用了擴大和我的小部件已連接到一個拖動directive.This工作正常崩潰。禁用NG-點擊,而在股利

問題:

展開和摺疊已被添加NG單擊事件,所以當用戶拖動小工具,並把它NG-點擊也被炒魷魚。當用戶拖動小部件時,我不希望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 
       }); 
     } 
     }; 
    }); 
+0

您可以在div拖動完成時添加event.stopPropagation()。 – Anita

+0

在dragable指令裏面? – Sajeetharan

+0

是的,如果您有任何功能/回調拖動完成功能 – Anita

回答

0

嘗試添加該在你的指令

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 
       }); 
      } 
     }; 
    }); 

這將停止事件的進一步傳播,所以它可能會停止不需要的點擊

+0

你能提供完整的代碼部分,包括我的指令 – Sajeetharan

+0

我已經添加了指令代碼,檢查是否???它可以幫助你 – Anita

+0

它沒有爲我工作和消息沒有打印 – Sajeetharan

1

我做了一個指令(alClick),這僅僅是NG-點擊,但取消所有點擊如果按下默認持續時間超過750毫秒。因此,拖動或滑動時不會觸發點擊或點按事件。

<div al-click="widget.expanded = !widget.expanded"></div> 
+0

這個要求。我喜歡alClick,直到我發現了警告我以前掩飾過,'此指令刪除/禁用角度的ng-click。您將無法使用隨NG-click.'這是不能接受的我的應用程序(和大多數應用程序,我猜)人點擊刪除NG單擊功能。我希望作者alClick的(@Mohammed A.鋁賈馬)可以修改它,以便它可以與NG-點擊共存!我確信有一種方法,它會使他的軟件產品變得更好。 – ryanm