Jquery 在angularjs中访问单击的元素

Jquery 在angularjs中访问单击的元素,jquery,angularjs,Jquery,Angularjs,我对AngularJS比较陌生,我怀疑自己没有掌握一个概念。我也在使用Twitter引导,我已经加载了jQuery 工作流:用户单击列表中的链接,“主”部分更新,链接用户单击获得活动类 基本HTML标记: <ul class="list-holder" ng-controller="adminController"> <li><a ng-click="setMaster('client')">Clients</li> <li>

我对AngularJS比较陌生,我怀疑自己没有掌握一个概念。我也在使用Twitter引导,我已经加载了jQuery

工作流:用户单击列表中的链接,“主”部分更新,链接用户单击获得活动类

基本HTML标记:

<ul class="list-holder" ng-controller="adminController">
   <li><a ng-click="setMaster('client')">Clients</li>
   <li><a ng-click="setMaster('employees')">Employees</li>
   <li><a ng-click="setMaster('etc')>Etc...</li>
</ul>
但是我不知道如何集成Angular和jQuery来完成这项工作,因为我正在使用Angular从服务器获取主列表(JSON格式)并更新页面上的列表

我如何整合这个?我似乎找不到我在angular controller函数中单击过的元素

控制器:

function adminController($scope)
    {    
        $scope.setMaster = function(obj)
        {
            // How do I get clicked element's parent li?
            console.log(obj);
        }
    }

AngularJS允许您使用以下语法(请注意
setMaster
函数的
$event
参数;此处的文档:)获得点击事件(以及点击事件的目标):

这不是解决这个问题的很有角度的方法。AngularJS的重点是模型操作。一种是对模型进行变异,让AngularJS计算渲染

AngularJS解决此问题的方法(无需使用jQuery和而无需传递
$event
参数
)是:

<div ng-controller="AdminController">
    <ul class="list-holder">
        <li ng-repeat="section in sections" ng-class="{active : isSelected(section)}">
            <a ng-click="setMaster(section)">{{section.name}}</a>
        </li>
    </ul>
    <hr>
    {{selected | json}}
</div>

以下是完整的JSFIDLE:

FYI:$event不起作用,除非它在标记中传递:
ng click=“setMaster(section,$event)”
只是一个提示。实际上,它必须传递给函数。但实际上,在控制器中引用类似于dom的东西可能不是最好的主意。通常,当使用$event时,它处于停止传播或类似情况的上下文中:
单击“仅限我”
我在使用$event.target时遇到问题,因为我的按钮中有一个图标。因此,有时目标结果是按钮,有时是图标(取决于我单击的位置)。我使用$event.currentTarget而不是target,它工作起来很有魅力。虽然像这样使用
$event.target
可能不是“有角度的方式”,但我觉得拥有一个大的
ng repeat
列表,每个项目都需要一个监听器来评估更改,这不是很有效吗?单击一个元素意味着整个列表中的每个项目都必须重新计算,对吗?--为什么不使用
$event.target
将一个项目作为目标来切换CSS类呢。你怎么认为?我正在开发一个Phonegap应用程序,需要尽可能地调整性能。我还建议使用
$event.currentTarget
而不是
$event.target
。如果具有ng click的元素具有子元素,则如果单击子元素,
$event.target
将成为子元素<代码>$event.currentTarget将始终以指定的ng单击为目标元素。
function AdminController($scope) {    
  $scope.setMaster = function(obj, $event){
    console.log($event.target);
  }
}
<div ng-controller="AdminController">
    <ul class="list-holder">
        <li ng-repeat="section in sections" ng-class="{active : isSelected(section)}">
            <a ng-click="setMaster(section)">{{section.name}}</a>
        </li>
    </ul>
    <hr>
    {{selected | json}}
</div>
$scope.setMaster = function(section) {
    $scope.selected = section;
}

$scope.isSelected = function(section) {
    return $scope.selected === section;
}