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

AngularJS:如何通过ng-click将ng-repeat的值传入组件赋值?

解决AngularJS ng-click中传递ng-repeat变量的问题

嘿,我来帮你搞定这个问题!你遇到的其实是AngularJS指令表达式的常见误区——在ng-click这类指令的表达式里,完全不需要用双大括号{{}}来插值,因为ng-click本身就运行在Angular的作用域中,能直接访问当前循环里的x变量。

为啥原来的写法不对?

你写的vm.currentPhoneRichPresenceState = '{{x.text}}';会把{{x.text}}当成一个固定字符串赋值给变量,而不是取到x.text的实际值。双大括号是用来在模板里直接输出内容的,比如你在<li>里写{{x.text}}是对的,但在指令的表达式里用它就会出问题。

正确的写法应该是这样

把双大括号去掉,直接引用x.text就行:

<li md-prevent-menu-close 
    ng-repeat="x in vm.telephonyInfo.phone.phoneRichPresenceStateOptions" 
    ng-click="vm.currentPhoneRichPresenceState = x.text; vm.setPhoneRichPresenceState();"
>
    {{x.text}}
</li>

额外给你个优化小建议

如果你的setPhoneRichPresenceState方法本来就要用到这个状态值,不如直接把x.text作为参数传给方法,这样代码更整洁:

<li md-prevent-menu-close 
    ng-repeat="x in vm.telephonyInfo.phone.phoneRichPresenceStateOptions" 
    ng-click="vm.setPhoneRichPresenceState(x.text);"
>
    {{x.text}}
</li>

然后在控制器里修改方法:

vm.setPhoneRichPresenceState = function(selectedState) {
    vm.currentPhoneRichPresenceState = selectedState;
    // 这里写你的其他逻辑
};

这样模板更简洁,控制器的逻辑也更集中,后期维护起来更方便~

内容的提问来源于stack exchange,提问作者Peter Boomsma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:27:46