我有一个组合框,其选项对应于一系列字典:
<select class="form-control" id="role_list" ng-model="dialogdata.role" multiple>
<option ng-repeat="role in roles" value="{{role}}">{{role.name}}</option>
</select>
这是用于生成组合框选项列表的数组:
$scope.roles = [ {
'id': 1,
'name': 'ROLE_USER'
}, {
'id': 2,
'name': 'ROLE_ADMIN'
}, {
'id': 3,
'name': 'ROLE_TPB_REPORT_USER'
}, {
'id': 4,
'name': 'ROLE_TPB_REPORT_ADMIN'
}];
它在组合框中正确显示选项,并允许我选择它们,但是当在方法内处理该数据时,我将变量设置为所选选项的值:
var newtype = dialogdata.type;
对于此测试,我选择前两个选项,然后提交。当它进入设置了var的方法时,字典条目已被转换为字符串。在控制台中,如果我设置断点,我可以看到var newtype设置为:
["{"id":1, "name":"ROLE_USER"}", "{"id":2, "name":"ROLE_ADMIN"}"]
我需要将值作为实际字典的数组而不是它们的字符串版本,这只是ng-model的限制,还是我可以将其用于工作?还有另一种更好的选择可以保留这种类型吗?
答案 0 :(得分:0)
<强>更新强> 根据我们的聊天,使用您的原始代码和:
更改强>
var newtype = dialogdata.type;
要强>
var newtype = JSON.parse(dialogdata.type);
console.log(newtype); // should provide your javascript object (dictionary)
您将整个字典传递给每个value
元素的<option>
属性。传统上,我们将此id
放在value属性中,将name
(在本例中)放在文本说明中。