You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AngularJS中ng-click动态调用控制器函数问题求助

解决AngularJS中ng-click动态调用函数的问题

这个问题我之前也碰到过,核心原因是AngularJS的指令表达式里不需要用{{}}插值——ng-click内部是直接解析Angular作用域表达式的,你写的ctrl.{{key}}()会被当成字符串处理,自然没法动态调用函数。

正确的做法是用JavaScript的方括号属性访问语法,把函数调用改成这样:

<li ng-repeat="(key, value) in getusermenu">
  <a ng-click="ctrl[key]()" ng-href="#!{{key}}">{{value}}</a>
</li>

为什么这样能行?

在JS里,访问对象属性有两种方式:

  • 点语法:ctrl.functionName1(),适合属性名是固定字符串的情况
  • 方括号语法:ctrl[key],这里的key是变量,会被解析成它的实际值,正好匹配你动态获取的函数名。加上()就可以直接调用这个函数了。

额外小提示

如果担心某些key对应的函数不存在(避免控制台报错),可以加个存在性判断:

<a ng-click="ctrl[key] && ctrl[key]()" ng-href="#!{{key}}">{{value}}</a>

这样只有当ctrl[key]确实是一个函数时,才会执行调用。

内容的提问来源于stack exchange,提问作者Shashi Ranjan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:09:30