2016-05-24 24 views
0

我有以下代碼NG-模型是數量,選擇框中的選項值是字符串

<select ng-disabled="currentQuestion.id" ng-change="loadTopics()" class="detail-subject-select browser-default" ng-model="currentQuestion.SubjectId"> 
     <option disabled="disabled" value="any">Choose a Subject</option> 
     <option value="1">K8-English</option> 
     <option value="2">K8-Math</option> 
    </select> 

的問題是,值1和2是字符串。我需要他們成爲數字。當我在頁面上選擇一個時,一切正常,但我需要選擇框用加載頁面時的(currentQuestion.SubjectId這是一個數字)的值進行初始化。

我該如何解決這個問題?

回答

1

的一種方法是定義你的選擇爲對象的數組在你的控制器中是這樣的:

$ scope.options = [{0} {0} {0}name:'K8-English' },{ value:2, name:'K8-Math' }];

而且使用實現這個在你的HTML NG選項是這樣的:

<select ng-disabled="currentQuestion.id" 
    ng-change="loadTopics()" 
    class="detail-subject-select browser-default" 
    ng-model="currentQuestion.SubjectId" 
    ng-options="option.value as option.name for option in options"> 
     <option disabled="disabled" value="any">Choose a Subject</option> 
</select> 
+0

解決了我的問題完全是,由於 – ceckenrode

+0

歡迎您。 – jbrown

2

標準HTML屬性(如「value」)總是表示字符串。不幸的是,你只能通過ng選項來實現:

通過 ngOptions支持具有非字符串值的選定模型。 https://docs.angularjs.org/api/ng/directive/ngValue

它可能看起來有點髒,但有更多的選擇實際上,你節省一些打字:

<select 
 
     ng-disabled="currentQuestion.id" 
 
     ng-change="loadTopics()" 
 
     class="detail-subject-select browser-default" 
 
     ng-model="currentQuestion.SubjectId" 
 
     ng-options="value as key for (key, value) in { 
 
        'K8-English': 1, 
 
        'K8-Math': 2 
 
        }" 
 
     > 
 
    <option 
 
      disabled="disabled" 
 
      value="" 
 
      >Choose a Subject</option> 
 
</select>