2016-05-12 62 views
0

所以我有一个使用角度的NG-点击功能角和jQuery单击功能

<div class="folder_icon" ng-click="selectFolder()">..... 

而且我selectFolder()函数看起来像这样的HTML代码:

$scope.selectFolder = function() { 
    $(".folder_icon").click(function() { 
     if ($scope.folder_select == false) { 
      $(this).parent().closest('div[class^="folder_nr_"]').css({ 
       'border': 'solid', 
       'border-width': '1px', 
       'border-color': '#ff7d43', 
       'box-shadow': '0 0 20px #ff7d43' 
      }); 
      $scope.folder_select = true; 

     } 
     else { 
      $(this).parent().closest('div[class^="folder_nr_"]').css({ 
       'border': '', 
       'border-width': '', 
       'border-color': '', 
       'box-shadow': '' 
      }); 
      $scope.folder_select = false; 
     } 
    }); 
}; 

当我使用这个功能我需要点击两次,因为角度ng-click和$ .jQuery.click()函数。我可以使我的功能相同,但没有jQuery点击功能?

+1

你可以......你在做什么被认为是不好的做法 - 不要混合使用Angular和jQuery。它需要2次点击的原因是因为在第一次点击时,您会调用您的Angular函数,这会创建jQuery点击处理程序。第二次点击再次调用Angular函数 - 但也调用jQuery处理程序,因为它现在存在。 – tymeJV

+0

是的。你已经在说“当用户点击这个时,就这样做。”你不需要两次。 –

回答

2

你应该这样做的Angular方式 - 它真的很简单。首先,一类你的CSS规则,你上面应用:

.myClass { 
    border: solid 
    border-width: 1px 
    border-color: #ff7d43 
    box-shadow: 0 0 20px #ff7d43 
} 

现在,通过ngClass将此类的元素和布尔变量(folder_select

<div ng-class="{'myClass': folder_select}"></div> 

现在,当$scope.folder_select是真的,这个班是应用的。现在更新你的Angular:

$scope.selectFolder = function() { 
    $scope.folder_select = !$scope.folder_select; 
} 
+0

wokrs完美,谢谢! –