2016-08-16 121 views
-3

我有以下代碼:爲什麼ng-model在select返回字符串而不是JSON?

<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\"}" 

我怎樣才能讓這個納克模型返回JSON,而不是一個字符串?

P.S .:我不想在一個方法中進行轉換,因爲我知道你可以用JSON.Parse()來做到這一點。

更新:

調試打印:

enter image description here

+0

*「但是,出於某種原因,我得到了JSON作爲字符串:」* well ... json是一個字符串。如果它不是一個字符串,它不會是json。 –

+0

@KevinB對不起,我不知道如何更好地解釋它。這就是爲什麼我添加了這些例子,所以不會有任何混淆。 –

+0

如何/你在哪裏看到'「{\」ID \「:2,\」Name \「:\」Outlook \「}」'? –

回答

-1

我以爲我錯了,但我沒有。如果你使用ng-repeat而不是ng-options,你的ng-model屬性被設置爲JSON字符串而不是實際的javascript對象。我發現這個問題更好地解釋它:Angular UI Select2, why does ng-model get set as JSON string?

所以爲了解決我的問題,我不得不從ng-repeat改爲ng-options。

2

我設置你的代碼plunker,似乎正常工作

https://plnkr.co/edit/Q8Cmknqg8bGBc5hABtF1

<!DOCTYPE html> 
<html> 
    <head> 
    <script data-require="[email protected]" 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> 

請檢查你的代碼我不' t認爲這是一個選擇指令問題

+0

我發現什麼令我感到困惑,因爲你的闖入者。我正在打印

{{ phase | json}}
這個階段的內容,並且管道增加了額外的反斜槓和引號,因此我認爲我得到了奇怪的值。 –

+0

我已經提出了一個新的答案,因爲我終於知道發生了什麼事情。 –

+0

我不明白,根據你問題上的代碼,我已經告訴你完全沒有問題 –

相關問題