我有以下代码:
<select class="form-control" id="existing-phases" ng-model="selectedPhase">
<option disabled selected value>-- select an option --</option>
<option ng-repeat="p in existingPhases" value="{{p}}">{{ p.Name }</option>
</select>
当我在我的选择中选择一个选项时,我希望得到与所选阶段相对应的JSON,如下所示:
{"ID":2,"Name":"Outlook"}
但是,我出于某种原因将JSON作为字符串获取:
"{\"ID\":2,\"Name\":\"Outlook\"}"
我怎样才能使ng-model返回JSON而不是字符串?
P.S。:我不想在一个方法中转换它,因为我知道你可以用JSON.Parse()做到这一点。
更新
调试打印:
答案 0 :(得分:2)
我用你的代码设置了一个plunker,似乎正常工作
https://plnkr.co/edit/Q8Cmknqg8bGBc5hABtF1
<!DOCTYPE html>
<html>
<head>
<script data-require="angularjs@1.5.8" data-semver="1.5.8" src="https://opensource.keycdn.com/angularjs/1.5.8/angular.min.js"></script>
<script>
angular.module('app', [])
.controller('FooCtrl', function($scope) {
$scope.existingPhases = [
{"ID":1,"Name":"a"},
{"ID":2,"Name":"b"},
{"ID":3,"Name":"c"},
{"ID":4,"Name":"d"},
{"ID":5,"Name":"e"}];
$scope.selectedPhase;
});
</script>
</head>
<body ng-app="app">
<div ng-controller="FooCtrl">
<select id="existing-phases" ng-model="selectedPhase">
<option disabled selected value>-- select an option --</option>
<option ng-repeat="p in existingPhases" value="{{p}}">{{ p.Name }}</option>
</select>
{{selectedPhase}}
</div>
</body>
</html>
请检查您的代码我不认为这是一个选择指令问题
答案 1 :(得分:0)
我以为我错了,但我不是。如果使用ng-repeat而不是ng-options,则ng-model的属性将设置为JSON字符串而不是实际的javascript对象。我发现这个问题可以更好地解释它:Angular UI Select2, why does ng-model get set as JSON string?。
因此,为了解决我的问题,我必须从ng-repeat更改为ng-options。