Angular 正式 - Select 输入对象
Angular Formly - Select input with object
请看下面jsbin。我有一个 select
输入,它有两个选项(俄亥俄州、纽约州)。在 Select 的 ng-options
中,我正在 select 整个对象,而不仅仅是名称或键值。我两个都需要。
当我 select 俄亥俄州(例如)时,model
正确更新显示 selected 对象:
"birthState": {
"Key": "1",
"Value": "Ohio"
}
如果我将此代码添加到控制器中的 model
(默认情况下将字段设置为 'Ohio'),select 不会反映此默认设置。
我做错了什么阻止我给这个下拉菜单一个默认值?
您无法 select 因为所有对象都将具有唯一 ID。选项数组中的对象和模型(在控制器中)中分配的对象将以这种方式不同。
为了达到你想要的效果,尝试在 ng-options 中通过 option.Key 添加 track,并为控制器内部模型的 'birthState' 字段分配 Key。
<script type="text/ng-template" id="select.html">
<select required type="number" ng-model="model[options.key]" ng-options="option.Value for option in to.options track by option.Key">
<option value="">Select One</option>
</select>
</script>
控制器内部
vm.model = {
"birthState": {Key: '3'}
};
请看下面jsbin。我有一个 select
输入,它有两个选项(俄亥俄州、纽约州)。在 Select 的 ng-options
中,我正在 select 整个对象,而不仅仅是名称或键值。我两个都需要。
当我 select 俄亥俄州(例如)时,model
正确更新显示 selected 对象:
"birthState": {
"Key": "1",
"Value": "Ohio"
}
如果我将此代码添加到控制器中的 model
(默认情况下将字段设置为 'Ohio'),select 不会反映此默认设置。
我做错了什么阻止我给这个下拉菜单一个默认值?
您无法 select 因为所有对象都将具有唯一 ID。选项数组中的对象和模型(在控制器中)中分配的对象将以这种方式不同。
为了达到你想要的效果,尝试在 ng-options 中通过 option.Key 添加 track,并为控制器内部模型的 'birthState' 字段分配 Key。
<script type="text/ng-template" id="select.html">
<select required type="number" ng-model="model[options.key]" ng-options="option.Value for option in to.options track by option.Key">
<option value="">Select One</option>
</select>
</script>
控制器内部
vm.model = {
"birthState": {Key: '3'}
};