2016-03-22 50 views
1

我将从服务中获取选定值作为整数,并且需要将其作为整数发回。请检查Plnkr代码ngmodel没有绑定选择标签上的整数值

<!-- Working --> 
<div ng-init="selectedvalue = '3'"> 
    <select ng-model="selectedvalue"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    <option value="4">4</option> 
    </select> 
</div> 
<!-- Not Working --> 
<div ng-init="selectedvalue2 = 3"> 
    <select ng-model="selectedvalue2"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    <option value="4">4</option> 
    </select> 
</div> 
<!-- Not Working --> 
<div ng-init="selectedvalue3 = 3"> 
    <select ng-model="selectedvalue3"> 
    <option value=1>1</option> 
    <option value=2>2</option> 
    <option value=3>3</option> 
    <option value=4>4</option> 
    </select> 
</div> 

https://plnkr.co/edit/R7QfJfy6m6IgHKL07tFI?p=preview

+0

我知道这很烦人,但你总是可以解析T作为INT使用'parseInt'。 –

+0

[复制](http://stackoverflow.com/questions/28114970/angularjs-ng-options-using-number-for-model-does-not-select-initial-value) – kiro112

回答

0

添加一个指令来解析字符串为int。例如convert-to-number您选择标签:

<select ng-model="selectedvalue" convert-to-number> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    <option value="4">4</option> 
</select> 

然后你就可以有

.directive('convertToNumber', function() { 
    return { 
    require: 'ngModel', 
    link: function(scope, element, attrs, ngModel) { 
     ngModel.$parsers.push(function(val) { 
     return parseInt(val, 10); 
     }); 
     ngModel.$formatters.push(function(val) { 
     return '' + val; 
     }); 
    } 
    }; 
}); 
0

在选择价值被解释像串。

您必须使用字符串并在之前或之前转换/解析您的值。

1

在NG-模型,你可以添加过滤器数量这样的转换:

ng-model="selectedvalue3 | number" 
0

您可以按照此过程select as label for value in array和更好的方式来从控制器的初始化值。

像控制器:

$scope.selectedvalue3 = 30; 
$scope.infos= [{age:21, name:"xx"},{age:20, name:"yyy"},{age:30, name:"zzz"},{age:40, name:"ppp"}]; 

和HTML:

<div> 
    <select ng-options="info.age as info.age for info in infos" ng-model="selectedvalue3"></select> 
</div> 

,其中年龄为整数值。它可能会帮助你