2016-05-12 10 views
0

は、だから私は角度とjQueryクリック機能

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

そして、私はselectFolder()関数は次のようになりますの角度NG-クリック機能を使用する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; 
     } 
    }); 
}; 

私はこの機能を使用する場合角度のクリックと$ .jQuery.click()関数のために2回クリックする必要があります。 jquery click functionを使用せずに同じ機能を使用できますか?

+1

あなたは何がしているのかは、悪い練習とみなされます。角度とjQuery。クリックが2回かかる理由は、最初のクリックでAngular関数が呼び出され、jQueryのクリックハンドラが作成されるからです。 2度目のクリックは再びAngular関数を呼び出しますが、jQueryハンドラは現在存在しているのでそれを呼び出します。 – tymeJV

+0

はい。あなたはすでに「ユーザーがこれをクリックするとこれを行う」と言っています。あなたはそれを二度必要としません。 –

答えて

2

あなたはこれをAngularな方法で実行する必要があります。それは本当に簡単です。今ブール変数(folder_select

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

、とき$scope.folder_select

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

は、ngClass経由であなたの要素にこのクラスを適用すると:まず、あなたが上記の適用しているあなたのCSSルールでクラスを作りますtrueの場合、このクラスが適用されます。今すぐあなたの角度を更新してください。

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

wokrs完璧、ありがとう! –