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

如何基于预设数组动态为ng-Model绑定Item的data.section属性?

解决AngularJS动态绑定对象属性的问题

嘿,我懂你碰到的麻烦了——你想通过循环rooms数组来动态绑定item.data里的sectionA到sectionZ属性,但原来的写法在CoffeeScript里提示模型无效,这是因为ng-model需要的是一个合法的表达式,而不是字符串拼接的结果。

问题根源

你原来的写法ng-model="item.data.section"+ room会被AngularJS当成两个独立的部分:字符串"item.data.section"和变量room,而不是一个完整的、用来访问对象属性的表达式,所以CoffeeScript会判定这个模型绑定不合法。

正确的解决方案

在JavaScript/CoffeeScript里,访问对象的动态属性需要用括号表示法(而不是点表示法),也就是通过obj['propertyName']的形式来访问。针对你的场景,应该把ng-model写成:

<div class="item" ng-repeat="room in rooms" >
  <input type="text" name="{{ item.key }}" class="form-control" ng-model="item.data['section' + room]" >
</div>

这样AngularJS就能正确解析表达式,动态拼接出sectionA、sectionB...sectionZ这些属性名,从而完成绑定。

额外提示

如果你的item.data一开始没有初始化sectionA到sectionZ这些属性,可能会出现绑定失效的情况(因为AngularJS无法绑定到undefined的属性)。你可以在CoffeeScript里提前初始化这些属性:

rooms = ["A", "B", ... , "Z"]
item.data = {}
for room in rooms
  item.data["section#{room}"] = "" # 初始化空字符串

这样循环绑定的时候,每个输入框都能正确关联到已存在的属性,避免出现意外问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:42:04