ng-repeat中的ng-model不更新参考对象

时间:2018-08-29 00:01:03

标签: javascript angularjs json angularjs-ng-repeat angularjs-material

在我的控制器中,我有一个对象:

$scope.selectedMap = {
    map: '', mapDesc: '', stops_json: "", stopLength: []
};

此对象中的 stops_json 键包含另一个对象,如下所示:

{
  desc: "PRG-BUD-HR-PAY",
  stop1:"DEPT",
  stop2:"ACCT",
  stop3:"ACCT2",
  stop4: 158,
  stop5:"CCT",
  stop6:"CCA",
  stop7: 156
}

我正在ng-repeat中使用此子对象,并为每个停靠点生成输入:

<p class="row col-md-12">
  <strong>Description:&nbsp;</strong>{{ selectedMap.stops_json.desc }}
</p>
<div class="row col-md-12 float-left">
    <md-input-container ng-repeat="stop in selectedMap.stops_json" ng-if="!$first" ng-model="stop" class="col-md-12">
        <label>Stop&nbsp;{{ $index }}:</label>
        <input class="col-md-8 float-left mapStops" ng-model="stop" aria-label="Route Stop Description">
    </md-input-container>
</div>

我的问题是,当我更改输入标签的值时, stops_json 对象不会更改。我对它应该有印象,因为那是被建模的对象。我显然弄错了,有人可以教育我吗?

1 个答案:

答案 0 :(得分:1)

首先要提到的几个问题:

我为您的代码段创建了一个精简示例,以演示使重复的输入能够更改ng-model模型。

See here.

基本上,您需要确保stops_json中的input元素直接绑定到您的ng-repeat模型,以便任何编辑影响它。

此外,请注意,所有数字属性都应使用stops_json的{​​{1}}变体,否则任何编辑都会将值设置为字符串。