我正在尝试使用ng-options从下拉菜单中更新模型,并使用ng-selected选择已经选择的值。这是一个简化的示例(和小提琴)。
的HTML
<div ng-app>
<h2>Todo</h2>
<div ng-controller="QuarterController">
<select name="quarter" ng-model="Quarter.id" ng-options="q.id as q.val for q in Quarters">
<option ng-selected="Quarter.val===q.val"></option>
</select>
<input type="button" name="Submit" value="Submit" ng-click="submit()"/>
<br/>
<p>{{answer}}</p>
</div>
</div>
角度的
function QuarterController($scope) {
$scope.Quarters = [{val: 'Q1', id: 1}, {val: 'Q2', id:2}, {val:'Q3', id:3}, {val:'Q4', id:4}];
$scope.Quarter = {val: 'Q2', id: 2, extraField: 'Hello'};
$scope.submit = function() {
$scope.answer = "Val: " + $scope.Quarter.val + ", Id: " + $scope.Quarter.id + $scope.Quarter.extraField;
};
}
因此,这里发生的是下拉选项,即$ scope.Quarters中的“ val”,所选选项的ID保存在$ scope.Quarter.id中。“提交”显示$ scope.Quarter中的ID和VAL。$ scope.Quarter.id会在提交时更新,但不会更新$ scope.Quarter.val。有人知道如何做到这一点吗?
编辑
添加了$ scope.Quarter.extraField可以更好地说明我要解决的问题。我需要id和val进行更新,但我希望extraField保持不变。
您的select指令中有小错误旅馆,请参见此处
看法:
<div ng-controller="QuarterController">
<select name="quarter" ng-model="Quarter" ng-options="q.val for q in Quarters">
<option value="">{{Quarter.val}}</option>
</select>
<input type="button" name="Submit" value="Submit" ng-click="submit()"/>
<br/>
<p>{{answer}}</p>
</div>
</div>
JS:
function QuarterController($scope) {
$scope.Quarters = [{
val: 'Q1',
id: 1
}, {
val: 'Q2',
id: 2
}, {
val: 'Q3',
id: 3
}, {
val: 'Q4',
id: 4
}];
$scope.Quarter = {
val: 'Q2',
id: 2
};
$scope.submit = function () {
$scope.answer = "Val: " + $scope.Quarter.val + ", Id: " + $scope.Quarter.id;
};
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句