2016-12-02 51 views
0

这里是我的JSON数组:NG-模型有一个字符串值和NG选项整数

array=[ {id:1, name:'A'} , {id:2, name:'B'} ] 

而在NG-模型我设置这可能是串像

modelValue='1' 

I值曾NG-选项

ng-option="option.id as option.name for option in array" 
ng-model="modelValue" 

但它没有显示在选择

选择NG-模型的价值
+0

错字:NG-选项,你忘了 'S'。 – Walfrat

+0

@Walfrat这是键入堆栈时的错字 –

回答

1

而在NG-模型我设置这可能是串像

你应该提供相同primitive or object type值到id$scope.modelValue。这是首选方式。

如果只JSON array正在被动态地获取和类型的一致性无法保证,那么你可以将一个函数将其转换为一个设置为$scope.modelValue

在HTML类型

<select ng-model="modelValue" ng-options="getId(option.id) as option.name for option in myarray"> 

</select> 

在控制器

$scope.modelValue='1'; 

$scope.myarray=[ {id:1, name:'A'} , {id:2, name:'B'} ]; 

$scope.getId = function(id) 
{ 
    if(typeof $scope.modelValue == "string") 
    return String(id); 
    else if(typeof $scope.modelValue == "number") 
    return parseInt(id); 
} 

COMPLETE EXAMPLE

另见this答案

+0

这工作正常。谢谢!! –

0

下面是根据您的描述工作的jsfiddle例如:http://jsfiddle.net/9pLdgmm1/1/

您应该使用ng-options代替ng-option

<select ng-options="p.name for p in people" 
     ng-model="selectedPerson"> 
</select> 
+0

我在ng-option和模型中的字符串中有整数值。 –

+0

@ Pooja-G然后请检查我更改的JSFiddle http://jsfiddle.net/4phwd44b/。 – tomepejo

+0

谢谢。但我得到了我想要的完美解决方案Nishant123 –

0

你应该采取ng-options而不是ng-option,ALS你应该采取integer本身,而不是字符串..

<!DOCTYPE html> 
 
<html> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
 
<body> 
 

 
<div ng-app="myApp" ng-controller="myCtrl"> 
 

 
<select ng-model="modelValue" ng-options="option.id as option.name for option in names"> 
 
</select> 
 

 
</div> 
 

 
<script> 
 
var app = angular.module('myApp', []); 
 
app.controller('myCtrl', function($scope) { 
 
    $scope.names = [ {id:1, name:'A'} , {id:2, name:'B'} ] 
 
    $scope.modelValue = 1; 
 
}); 
 
</script> 
 

 
<p>This example shows how to fill a dropdown list using the ng-options directive.</p> 
 

 
</body> 
 
</html>

ng-options运行上面的代码片段

Here is a Working DEMO

-1

你有一个语法错误:

<select ng-options="option.name for option in array" ng-model="modelValue"></select> 

var myapp = angular.module('myapp', []); 
 
myapp.controller('FirstCtrl', function($scope) { 
 
    $scope.array = [{ 
 
    id: 1, 
 
    name: 'A' 
 
    }, { 
 
    id: 2, 
 
    name: 'B' 
 
    }]; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myapp"> 
 
    <fieldset ng-controller="FirstCtrl"> 
 
    <select ng-options="option.name for option in array" ng-model="modelValue"></select> 
 
    modelValue is: {{modelValue}} 
 
    </fieldset> 
 
</div>

+0

为什么这是downvoted?上面的代码工作并提供了一个解决方案... – Mistalis

0

这不应被选中,因为所有的id都是数字。如果你想让它选择,然后解析你的$ scope.modelValue像这样的数字。

$scope.modelValue= parseInt("1"); 

而且改变你的NG选项,而不是NG选项的