ng-model是数字,选择框选项值是字符串

时间:2016-05-24 17:18:32

标签: angularjs drop-down-menu

我有以下代码

  <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这是一个数字)的值初始化选择框。

我怎样才能解决这个问题?

2 个答案:

答案 0 :(得分:2)

标准HTML属性(如“value”)始终表示字符串。不幸的是,你只能用ng-options实现这个目的:

  

可通过以下方式支持具有非字符串值的选定模型   ngOptions。   https://docs.angularjs.org/api/ng/directive/ngValue

看起来有点脏,但有更多选项你实际上节省了一些打字:

[INFO] Downloaded: https://p-nexus.mycompany.com/nexus/content/repositories/Myproject-group/aopalliance/aopalliance/1.0/aopalliance-1.0.jar (5 KB at 59.8 KB/sec)

[INFO] Downloaded: https://p-nexus.mycompany.com/nexus/content/repositories/public/aopalliance/aopalliance/1.0/aopalliance-1.0.jar (0 B at 0.0 KB/sec)

答案 1 :(得分:1)

一种方法是将您的选项定义为控制器中的对象数组,如下所示:

$ scope.options = [{     值:1,     名称:'K8-English'   },{     价值:2,     名称:'K8-Math'   }];

使用像这样的ng-options在HTML中实现:

<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>