2016-12-02 86 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選項的