Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 嵌套ng单击 {{getEmployeeByName(employee.name).name}_Javascript_Angularjs - Fatal编程技术网

Javascript 嵌套ng单击 {{getEmployeeByName(employee.name).name}

Javascript 嵌套ng单击 {{getEmployeeByName(employee.name).name},javascript,angularjs,Javascript,Angularjs,这是我代码的一部分。两个“ng click”都被调用。我只需要内部ng click=“addTeamMember(employee)。 如何处理?嗯,如果我理解你的问题,你需要这个吗 <div ng-repeat='employee in filteredStaff ' ng-click="describeEmployee(employee)" > <div class="gridNameTd"> <div ng-click="addTeam

这是我代码的一部分。两个“ng click”都被调用。我只需要内部ng click=“addTeamMember(employee)。
如何处理?嗯,如果我理解你的问题,你需要这个吗

<div ng-repeat='employee in filteredStaff ' ng-click="describeEmployee(employee)" >
    <div class="gridNameTd">
        <div ng-click="addTeamMember(employee)">{{getEmployeeByName(employee.name).name}} </div>
    </div>
 </div>

{{getEmployeeByName(employee.name).name}

您需要使事件不在DOM树中冒泡。单击即可传递事件,并告诉它不要使用
$event.stopPropagation将其传递到链上

这是一个正在工作的plunker:

例如:

在控制器中:

<div ng-repeat='employee in filteredStaff'>
    <div class="gridNameTd">
        <div ng-click="addTeamMember(employee)">{{getEmployeeByName(employee.name).name}} </div>
    </div>
 </div>
在HTML中:

$scope.addTeamMember = function($event, employee) {
  $event.stopPropagation();
  // do stuff....
}

{{getEmployeeByName(employee.name).name}

尝试使用
$event.stopPropagation()
停止内部事件的传播,如下所示:

<div ng-repeat='employee in filteredStaff ' ng-click="describeEmployee(employee)" >
  <div class="gridNameTd">
    <div ng-click="addTeamMember($event, employee)">{{getEmployeeByName(employee.name).name}} </div>
  </div>
</div>

{{getEmployeeByName(employee.name).name}

您可能还需要查看用于处理员工姓名的筛选器。当然,我不知道您的函数在做什么,但是getEmployeeByName(employee.name)。name看起来您已经有了员工的姓名,您只是在将其翻译成其他版本的姓名。因此,这可能会更改为{{employee.name | employeeName}其中employeeName是一个新的筛选器,它执行getEmployeeByName()以前所做的任何操作。这将允许更好地重用该函数,而不必一直将其注入控制器作用域(假设它在其他地方使用)。我找不到从何处获取$event。did:{getEmployeeByName(employee.name).name}一秒钟后,我从手机转换到PC,这样我就可以正确地构建一个示例。:)编辑示例以显示HTML更改,并提供指向plunker示例的链接。是的-thx。我明白了:我需要从HTML元素发送$event。而$event是JQueryLite的一部分。JQueryLite捆绑到Angular中。您会发现许多相似之处(因为它是JQuery;))
<div ng-repeat='employee in filteredStaff ' ng-click="describeEmployee(employee)" >
    <div class="gridNameTd">
        <div ng-click="addTeamMember(employee); $event.stopPropagation()">{{getEmployeeByName(employee.name).name}} </div>
    </div>
 </div>