使用 angular ng-options 在 <select> 中设置默认值可能使用 ng-init
Set default value in <select> with angular ng-options maybe using ng-init
我在html
中有这个
<select ng-model="inventory.condition"
ng-init="inventory.condition = con"
ng-options="con.name for con in conditions"
<option >-- choose condition --</option>
</select>
{{inventory.condition}}
在 js angular 控制器上:
$scope.conditions = [
{"name":"New","id":101},
{"name":"Used","id":102},
{"name":"Like new","id":103},
{"name":"Not Working","id":104}
]
$scope.inventory.condition = {"name":"Used","id":102};
SELECT 填充工作正常,如果我 select 列表中的项目正确设置 ng-model 并且 Htlm 正确显示模型 selected(我想得到完整的模型 selected,不仅是 "id" 值),但在构建列表时我无法设置默认值。
想法是接收一个模型(js 对象),其中包含默认值(真正来自 WS 的 html 请求,该请求之前保存在数据库中)和 select 默认值带有模型值的项目,如果用户 select 是一个新项目,它可以更改相同的模型(稍后我将再次 update/persist)。
问题是$scope.inventory.condition
必须是$scope.conditions
数组元素,两个对象只有当它们是同一个对象时才相等。所以你不能只设置 $scope.inventory.condition = {"name":"Used","id":102};
: event 虽然 {"name":"Used","id":102}
看起来像数组的第二个值,但实际上它们并不相等,所以 Angular 不会将它设置为默认值。
您需要像这样设置模型值:
$scope.conditions = [
{"name":"New","id":101},
{"name":"Used","id":102},
{"name":"Like new","id":103},
{"name":"Not Working","id":104}
];
$scope.inventory.condition = $scope.conditions[1];
我在html
中有这个<select ng-model="inventory.condition"
ng-init="inventory.condition = con"
ng-options="con.name for con in conditions"
<option >-- choose condition --</option>
</select>
{{inventory.condition}}
在 js angular 控制器上:
$scope.conditions = [
{"name":"New","id":101},
{"name":"Used","id":102},
{"name":"Like new","id":103},
{"name":"Not Working","id":104}
]
$scope.inventory.condition = {"name":"Used","id":102};
SELECT 填充工作正常,如果我 select 列表中的项目正确设置 ng-model 并且 Htlm 正确显示模型 selected(我想得到完整的模型 selected,不仅是 "id" 值),但在构建列表时我无法设置默认值。
想法是接收一个模型(js 对象),其中包含默认值(真正来自 WS 的 html 请求,该请求之前保存在数据库中)和 select 默认值带有模型值的项目,如果用户 select 是一个新项目,它可以更改相同的模型(稍后我将再次 update/persist)。
问题是$scope.inventory.condition
必须是$scope.conditions
数组元素,两个对象只有当它们是同一个对象时才相等。所以你不能只设置 $scope.inventory.condition = {"name":"Used","id":102};
: event 虽然 {"name":"Used","id":102}
看起来像数组的第二个值,但实际上它们并不相等,所以 Angular 不会将它设置为默认值。
您需要像这样设置模型值:
$scope.conditions = [
{"name":"New","id":101},
{"name":"Used","id":102},
{"name":"Like new","id":103},
{"name":"Not Working","id":104}
];
$scope.inventory.condition = $scope.conditions[1];