2016-05-12 53 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完美,謝謝! –