2016-05-24 23 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>