ng-model将字典转换为字符串

时间:2018-04-03 19:22:30

标签: javascript html angularjs

我有一个组合框,其选项对应于一系列字典:

<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的限制,还是我可以将其用于工作?还有另一种更好的选择可以保留这种类型吗?

1 个答案:

答案 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(在本例中)放在文本说明中。