如何使用 Angular.JS 在下拉列表中绑定选项的值和文本
How to bind both the option's value and text in a drop down list using Angular.JS
在Angular.JS中,有没有办法在选择下拉选项时绑定两个不同的ng模型?
角度代码:
<select ng-model="vm.data.styleId" ng-options="item.id as item.name for item in vm.getStylesData.styles">
<option value="">Select a Style</option>
</select>
结果:
<option value="{{item.id}}">{{item.name}}</option>
使用到目前为止的 Angular 代码,当选择一个选项时,它会将该选项的值保存到 ng 模型中。在这种情况下,item.id
必然vm.data.styleId
。
但是除此之外,我还需要绑定所选选项的"item.name"。基本上,当选择一个选项时,我需要将item.id
绑定到vm.data.styleId
,并将item.name
绑定到vm.data.name
。
有没有一种简单的方法可以使用Angular.JS做到这一点?
解决方案(使用Lisa p.的答案):
在视图中:
<select ng-model="vm.styleItem" ng-change="vm.getDetails()" ng-options="item as item.name for item in vm.getStylesData.styles">
<option value="">Select a Style</option>
</select>
控制器内部:
vm.getDetails = function () {
// set the values of the select drop down
vm.data.styleId = vm.styleItem.id;
vm.data.style = vm.styleItem.name;
}
您可以绑定到包含两个值的对象,例如
item = { styleId: 23, name: "the name" }
vm.data = {{ styleId: ..., name: ... }}
然后使用
<option value="{{item}}">{{item.name}}</option>
控制器
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.vm.data.styleId = "";
$scope.item = {id : '1', name : 'name'};
});
.html
<div ng-controller="myCtrl">
<select ng-model="vm.data.styleId" ng-options="item.id as item.name for item in vm.getStylesData.styles">
<option value="{{item}}">{{item.name}}</option>
</select>
</div>
创建一个同时包含 id 和名称的对象,并将该对象作为值传递给选项
相关文章:
- 或者在表单上选择默认选项文本(选择1)
- 在ractive.js中获取所选选项文本
- 使用VueJs获取Select选项文本
- Rally App SDK 2.0:rallymultiobjectpicker无法加载选项文本
- 选择选项文本作为数组
- 动态更改选项文本不起作用
- 页面重定向后,使用选定的选项文本更新下拉菜单文本
- 为什么选择只显示IE 9中选项文本的第一个字符
- 如何在jquery的选择下拉列表中获取选项文本
- 如何使“所选选项”与当前“所选选项”文本的宽度相同
- 使用选择选项文本更改价格
- 使用挖空将选项文本绑定到具有对象数组的属性
- 传递要发送的数据.选择选项文本和值
- 挖空.js从 AJAX 调用获取数据后更新选项文本
- 在选择框中从任意 JavaScript 对象绑定选项值和选项文本
- 显示选择选项文本日期
- 如何使用jquery或javascript使用选定的下拉选项文本设置innerhtml
- JSColor 不适用于 Volusion 选项文本框
- 如何在 HTML 选择中对选项文本的某些部分使用不同的颜色
- 获取基于值的选择选项文本