ng-repeat 中的 ng-model 不更新参考对象
ng-model within ng-repeat not updating reference object
在我的控制器中,我有一个对象:
$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: </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 {{ $index }}:</label>
<input class="col-md-8 float-left mapStops" ng-model="stop" aria-label="Route Stop Description">
</md-input-container>
</div>
我的问题是,当我更改输入标签的值时,stops_json 对象没有改变。我的印象是它应该如此,因为那是被建模的对象。我分明是错的,谁能教教我?
先提几个问题:
- The notation for iterating over objects with
ng-repeat
is (key, value) in obj
- 如果您选择对
ng-repeat
使用对象迭代,那么您对 $first
的 ng-if
依赖是不确定的(即不保证按键定义顺序迭代)
- 在
ng-repeat
上应用 ng-model
绑定以使其成分可编辑是不正确的——每个项目的模型应该 ng-model
应用
我为您的代码段创建了一个精简示例,以演示如何使重复输入能够更改 stops_json
模型。
基本上,您需要确保 ng-repeat
中的 input
元素直接绑定到您的 stops_json
模型,以便任何编辑都能影响它。
此外,请注意所有任何数字属性都应使用 input
的 type="number"
变体,否则任何编辑都会将值设置为字符串。
在我的控制器中,我有一个对象:
$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: </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 {{ $index }}:</label>
<input class="col-md-8 float-left mapStops" ng-model="stop" aria-label="Route Stop Description">
</md-input-container>
</div>
我的问题是,当我更改输入标签的值时,stops_json 对象没有改变。我的印象是它应该如此,因为那是被建模的对象。我分明是错的,谁能教教我?
先提几个问题:
- The notation for iterating over objects with
ng-repeat
is(key, value) in obj
- 如果您选择对
ng-repeat
使用对象迭代,那么您对 $first
的ng-if
依赖是不确定的(即不保证按键定义顺序迭代) - 在
ng-repeat
上应用ng-model
绑定以使其成分可编辑是不正确的——每个项目的模型应该ng-model
应用
我为您的代码段创建了一个精简示例,以演示如何使重复输入能够更改 stops_json
模型。
基本上,您需要确保 ng-repeat
中的 input
元素直接绑定到您的 stops_json
模型,以便任何编辑都能影响它。
此外,请注意所有任何数字属性都应使用 input
的 type="number"
变体,否则任何编辑都会将值设置为字符串。