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

Angular 1.6中如何向ng-model传递参数?

在Angular 1.6中给ng-repeat的ng-model传递$index创建多维数组

嘿,刚好我对Angular 1.x的ng-repeat和ng-model这块熟得很,给你两种实用的解决办法!

方法一:用$index构建二维telephone数组

你只需要把$index直接作为telephone数组的第一个索引,就能为每个循环项创建独立的电话子数组了,Angular会自动帮你初始化不存在的数组项,完全不用手动提前创建所有子数组。

修改后的模板代码:

<div ng-repeat="detail in details track by $index">
  <input type="text" ng-model="telephone[$index][0]" placeholder="第一个号码" />
  <input type="text" ng-model="telephone[$index][1]" placeholder="第二个号码" />
</div>

对应的控制器里,你只需要初始化一个空数组就行(甚至不初始化也可以,但提前声明更规范):

// 控制器中
$scope.details = [/* 你的详情数据 */];
$scope.telephone = []; // 初始化空数组,Angular会自动填充子项

当用户在输入框输入内容时,Angular会自动创建telephone[$index]这个子数组,并把输入值分别存在[0]和[1]的位置,最终telephone会变成一个和details长度一致的二维数组,每个子数组对应一组电话。

方法二:把电话数据绑定到detail对象本身

如果你觉得单独维护telephone数组有点麻烦,更推荐把电话数据直接绑定到循环的detail对象上,这样数据结构更紧凑,也更符合Angular数据绑定的设计思路:

模板代码改成这样:

<div ng-repeat="detail in details">
  <input type="text" ng-model="detail.telephone[0]" placeholder="第一个号码" />
  <input type="text" ng-model="detail.telephone[1]" placeholder="第二个号码" />
</div>

这种方式下,你不需要单独声明telephone数组,Angular会自动在每个detail对象上添加telephone子数组,输入的号码直接存在对应的详情项里,后续处理数据的时候也更方便,不用再把details和telephone做关联匹配。

两种方法都能实现你想要的效果,看你更倾向哪种数据结构啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:46:59