2015-09-03 38 views
10

我试图通过AngularJS变量作为参数值在onclick()中调用javascript函数。任何人都可以指导我如何做到这一点?如何通过角度js变量内部的onclick函数作为参数

我的代码:

<div onclick="deleteArrival({{filterList.id}})" class="table-icon deleteIcon">{{filterList.id}}</div> 
+4

有什么特别的理由说明你没有使用'onclick'吗?使用'ng-click'应该没问题 –

回答

17

您应该使用NG点击,没有理由使用的onclick的角度为您提供使用此功能

<div ng-click="deleteArrival(filterList.id)" 
    class="table-icon deleteIcon">{{filterList.id}}</div> 

然后,您应该将您的功能移动到您的AngularJS控制器,并将其绑定到范围

$scope.deleteArrival = function(filterListId) { ... }; 

如果你确实需要使用的onclick调用外部功能,您可以将功能改成像这样在你的范围内,仍采用NG-点击上面的属性:

$scope.deleteArrival = function(filterListId) { window.deleteArrival(filterListId); }; 

但是我看不出理由不将其移动到你的范围

+0

感谢它的工作 – Lakshya

+0

我正面临类似的问题。我可以列出我不想使用示波器的原因......但我真的不知道为什么角度不能像任何其他属性那样允许“onclick” –

+1

他为什么要使用它有很多原因一个onclick而不是ng-click,我们最明显的是他依赖于一个大的JavaScript库,它不是用Angular编写的。 – Leon

1

你可以很容易地解决使用ng-click你的问题,但你应该在你的范围deleteArrival方法。

标记

<div ng-click="deleteArrival(filterList.id)" class="table-icon deleteIcon"> 
    {{filterList.id}} 
</div> 
+1

你有效的点..但他没有使用'ng-click' –

+0

是的,我建议他使用'ng-click',因为他正在使用angularJS。 –

+0

我需要使用onclick('hi');喜欢这个。但数据已从ng-repeat中获得,我理解你的想法。但我需要这样的..我想调用javascript function.so,我要求它bro –

0

试试这个没有花括号 deleteArrival(filterList.id)

+0

它抛出未定义错误bro –

1

上面的事情是很容易可以利用ng-click指令,并具有内部控制器范围内该功能,只有一点是,你需要指定你的java-script功能n引用控制器范围变量。无需再次在您的范围内重写该函数。通过函数的引用将会诀窍。

标记

<div ng-click="deleteArrival(filterList.id)" class="table-icon deleteIcon"> 
    {{filterList.id}} 
</div> 

控制器

//assign javascript method reference in controller 
$scope.deleteArrival = deleteArrival; 
1

不允许您创建了事件处理程序绑定属性,如的onclick,onload事件,的onsubmit等,angularjs因为, 绑定这些属性并没有实际价值,并且这样做只会将您的应用程序暴露给XSS等安全漏洞。由于这些原因,在angularjs中不支持绑定到事件处理程序属性(以on和formaction属性开头的所有属性)。

对于你的情况,

ng-repeat,使用ng-click发送值给你的函数并声明功能控制器。

See here for documentation of ng-click

希望这有助于!

+0

有实用价值,至少对于我的情况。的onclick = “legacyOrGlobalMethod({{product.id}})” –

0

我不会第二次猜测你不使用ng-click的原因,因为其他贡献者已经指出你真的'应该'。但是,如果你真的想要/需要,通过使用'this'和数据属性,我的建议。

<div data-filterListId="{{filterList.id}}" onclick="deleteArrival(this)" class="table-icon deleteIcon">{{filterList.id}}</div> 
function deleteArrival(arrivalElem) { 
    alert('myId=' + arrivalElem.getAttribute("data-filterListId")); 
} 
0

我有,我不能使用,由于窗口结合NG点击的情况下。没有得到直接的答案,但下面的确为我工作。我知道这不是一个好的解决方案,但在我的情况下可行。

angular.element(本).scope()。ctrlName.variable

您可以尝试使用自己的类结构。所以点击将是如下:

的onclick = “测试(angular.element(本).scope()ctrlName.ObjName.variable)”

0

如果你仍然想使用onclick,这是工作对我而言,我希望它也适合你。

<div id="{{filterList.id}}" onclick="deleteArrival(this.id)" class="table-icon deleteIcon">{{filterList.id}}</div> 
相关问题