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

如何获取ng-repeat内动态添加的带ng-model的输入框值?

解决ng-repeat内部ng-model值获取问题的方案

问题代码

<tbody>
    <tr ng-repeat="eta in etaArray">
        <td ng-init="modelIndex =$index">{{$index+1}}</td>
        <td style="visibility: hidden">{{eta.BKE_ID}}</td>
        <td style="visibility: hidden">{{eta.BKE_POINT}}</td>
        <td>{{modelIndex}}</td>
        <td>{{eta.BKE_POINT_Text}}</td>
        <td>{{eta.BKE_DESC}}</td>
        <td>{{eta.BKE_DATE | date:'dd-MM-yyyy'}}</td>
        <td>
            <input class="form-control factDateInput" value="{{eta.BKE_FACTDATE|  date:'yyyy-MM-dd' }}" ng-keyup="trackTimeChanging($event,this,$index)" ng-model="factDate[$index]" style="width: 55%" type="date" id="inputFactDate" />
        </td>
    </tr>
</tbody>

可行解决方案

方案1:直接绑定到数组元素属性(推荐)

放弃单独维护factDate数组,将ng-model直接绑定到eta对象的属性上,控制器中遍历etaArray即可获取对应值:

<input class="form-control factDateInput" 
       ng-model="eta.BKE_FACTDATE" 
       ng-keyup="trackTimeChanging($event,this,$index)" 
       style="width: 55%" 
       type="date" 
       id="inputFactDate" />

控制器中取值:

$scope.etaArray.forEach(item => {
    console.log(item.BKE_FACTDATE);
});

方案2:提前初始化factDate数组

若坚持使用独立的factDate数组,需在控制器中提前初始化,保证数组长度与etaArray一致,让AngularJS能正常追踪:

// 基于etaArray初始化factDate
$scope.factDate = $scope.etaArray.map(item => {
    return new Date(item.BKE_FACTDATE);
});

此时视图中factDate[$index]可正常绑定,控制器直接访问$scope.factDate即可拿到所有值。

方案3:通过事件传递当前值

利用已有的trackTimeChanging方法,在事件中直接传递当前ng-model值:

ng-keyup="trackTimeChanging($event, factDate[$index], $index)"

控制器处理逻辑:

$scope.trackTimeChanging = function(event, value, index) {
    console.log(`第${index+1}项日期值:`, value);
    $scope.factDate[index] = value;
};

方案4:通过$parent访问父作用域(不推荐)

若ng-repeat子作用域导致无法访问父作用域的factDate,可使用$parent前缀绑定:

ng-model="$parent.factDate[$index]"

此方式不够直观,仅作为临时替代方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 16:21:11