在我的控制器中,我有一个对象:
$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 对象不会更改。我对它应该有印象,因为那是被建模的对象。我显然弄错了,有人可以教育我吗?
答案 0 :(得分:1)
首先要提到的几个问题:
ng-repeat
is (key, value) in obj
ng-repeat
一起使用,则您依赖于ng-if
的{{1}}是不确定的(即不能保证按键定义顺序进行迭代)$first
上应用ng-model
绑定以使其组成部分可编辑的意图是不正确的-应该为每个项目的模型应用ng-repeat
我为您的代码段创建了一个精简示例,以演示使重复的输入能够更改ng-model
模型。
基本上,您需要确保stops_json
中的input
元素直接绑定到您的ng-repeat
模型,以便任何编辑影响它。
此外,请注意,所有数字属性都应使用stops_json
的{{1}}变体,否则任何编辑都会将值设置为字符串。