我试图在onclick()中传递AngularJS变量作为参数值来调用javascript函数。任何人都可以指导我如何做到这一点吗?
我的代码:
myObject[prop3nameWhichIsPartOfOtherVar] = value;
答案 0 :(得分:22)
您应该使用ng-click,没有理由使用onclick,因为angular会为您提供此功能
<div ng-click="deleteArrival(filterList.id)"
class="table-icon deleteIcon">{{filterList.id}}</div>
然后,您应该将您的函数移动到AngularJS控制器中,并将其绑定到范围
$scope.deleteArrival = function(filterListId) { ... };
如果您绝对需要使用onclick来调用外部函数,您可以在范围内将函数更改为类似的内容,仍然使用上面的ng-click属性:
$scope.deleteArrival = function(filterListId) { window.deleteArrival(filterListId); };
但是,我无法看到不将其移入您的范围的理由
答案 1 :(得分:4)
如果您仍然想使用onclick,这对我有用,我希望它对您也有用。
<div id="{{filterList.id}}" onclick="deleteArrival(this.id)" class="table-icon deleteIcon">{{filterList.id}}</div>
答案 2 :(得分:1)
您可以使用ng-click
轻松解决问题,但您的范围内应该有deleteArrival
方法。
<强>标记强>
<div ng-click="deleteArrival(filterList.id)" class="table-icon deleteIcon">
{{filterList.id}}
</div>
答案 3 :(得分:1)
使用ng-click
指令并在控制器范围内具有该功能,很容易实现上述功能,只需要将java脚本函数引用分配给控制器范围变量。无需再次重写示波器中的功能。通过函数的引用就可以了。
<强>标记强>
<div ng-click="deleteArrival(filterList.id)" class="table-icon deleteIcon">
{{filterList.id}}
</div>
<强>控制器强>
//assign javascript method reference in controller
$scope.deleteArrival = deleteArrival;
答案 4 :(得分:1)
您不能为angularjs中的onclick,onload,onsubmit等事件处理程序属性创建绑定,因为, 绑定到这些属性没有实际价值,这样做只会将您的应用程序暴露给XSS等安全漏洞。由于这些原因,angularjs不支持绑定到事件处理程序属性(以on和formaction属性开头的所有属性)。
对于您的情况,
在ng-repeat
内,使用ng-click
向您的函数发送值并在控制器中声明该函数。
See here for documentation of ng-click
希望这有帮助!
答案 5 :(得分:1)
我不会再猜测你没有使用ng-click的原因,因为其他贡献者已经指出你真的应该&#39;。但是,如果你真的想要/需要,请继续使用&#39;这个&#39;和数据属性。
<div data-filterListId="{{filterList.id}}" onclick="deleteArrival(this)" class="table-icon deleteIcon">{{filterList.id}}</div>
function deleteArrival(arrivalElem) {
alert('myId=' + arrivalElem.getAttribute("data-filterListId"));
}
答案 6 :(得分:0)
尝试没有花括号 deleteArrival(filterList.id)
答案 7 :(得分:0)
由于窗口绑定,我遇到了无法使用ng-click的情况。没有得到直接答案,但下面的确对我有用。我知道这不是一个好的解决方案,但在我的情况下是可行的。
angular.element(本).scope()。ctrlName.variable
您可以尝试使用自己的类结构。所以点击将如下:
的onclick =&#34;测试(angular.element(本).scope()ctrlName.ObjName.variable。)&#34;
答案 8 :(得分:0)
我的用例是我的应用程序依赖于不是用 Angular 编写的函数的大型 JavaScript 文件。为此,我在控制器中添加了一个函数,该函数连接到这些 JS 函数之一:
$scope.controllerFunction = function() {
javaScriptFunction('foo');
}
javascriptFunction(parameter){
let variable = parameter
}
然后在我看来,使用 ng-click,我访问了控制器功能:
ng-click="controllerFunction()"
对我来说,"onclick="deleteArrival(this.id)" 示例返回 undefined。以上是最好的解决方案。