我很难理解如何在 ng-repeat 中使用 ng-model。
在这种情况下,CargoItems 是一个包含 LoadPoint 的对象列表。 LoadPoint 具有 Id 和 Text 属性。
我想显示文本,绑定(bind)到下拉列表中的当前选择,但我当然也想跟踪选择了哪个 Id。所以我不确定如何使用 select 绑定(bind)更新这两个属性,要么通过显式使用标签,要么使用我还没有真正弄清楚的 ng-options。
所以两个问题:
1) 如何将选择列表中的文本和值正确绑定(bind)到 CargoItem.LoadPoint 上的 Id 和 Text 属性?我有一种感觉,我的 ng-model 可能是错的?
2) 如何使用 ng-options 默认为选定值?我想出来写我自己的选项标签,但如果可能的话,我想使用 ng-options。
<div ng-repeat="cargoItem in cargo.CargoItems">
<span>Selected Load Point: {{cargo.LoadPoint.Text}}</span>
<select ng-model="cargoItem.LoadPoint" ng-options="loadPoint.Id as loadPoint.Text for loadPoint in LoadPoints"></select>
</div>
提前致谢!
最佳答案
loadPoint.Id
)。为此,只需更改 ng-options
并删除 loadPoint.Id as
部分:<select ng-model="cargoItem.LoadPoint" ng-options="loadPoint.Text for loadPoint in LoadPoints"></select>
$scope.LoadPoints = [{ Id: '1', Text: 'loadPointA' },{ Id: '2', Text: 'loadPointB' }];
$scope.cargo = {
CargoItems: [{
LoadPoint: $scope.LoadPoints[0]
}, {
LoadPoint: $scope.LoadPoints[1]
}]
};
使用这种方法,
cargoItem.LoadPoint
(ngModel)将始终持有对整个 LoadPoints 对象(即 { Id: '1', Text: 'loadPointA' }
)的引用,而不仅仅是它的 Id(即 '1'
)。 jsFiddle : http://jsfiddle.net/bmleite/baRb5/