2016-09-29 35 views
1

採用NG-重複和$指數如何使用angularjs

我的代碼顯示默認設定值: 我有SelectValues:

"Jewelery_And_Diamond_Type": [ 
{ 
    "id": 33, 
    "value": "Earrings" 
}, 
{ 
    "id": 35, 
    "value": "Gemstones" 
}, 
{ 
    "id": 34, 
    "value": "Loose Diamonds" 
}, 
{ 
    "id": 32, 
    "value": "Necklaces" 
}, 
{ 
    "id": 31, 
    "value": "Pendants" 
}, 
{ 
    "id": 30, 
    "value": "Rings" 
} ] 

selected Value is "Earings" 

在我的HTML

<select ng-model="categoryval.Jewelery_And_Diamond_Type[$index]" ng-init="categoryval.Jewelery_And_Diamond_Type[$index] = SelectValues.Jewelery_And_Diamond_Type.indexOf(0)" ng-options="option.value for option in SelectValues.Jewelery_And_Diamond_Type track by option.id"> 

如果我寫了這樣的意味着默認情況下沒有選擇任何值。我需要根據$ index精確選定的值。

+0

NG-模型=「categoryval.Jewelery_And_Diamond_Type [$指數] .value的試試這個 –

+0

@RaviTeja不工作。 – Ben10

+0

嘗試這樣,我不確定它是否會起作用ng-init =「categoryval.Jewellery_And_Diamond_Type [$ index] = SelectValues.Jewelery_And_Diam ond_Type.indexOf(0).value「 –

回答

1

使用NG選項

<select ng-model="value" ng-init="value='Earrings'" ng-options="mode.value as mode.value for mode in storageResult.Jewelery_And_Diamond_Type"> 
    </select> 

DEMO

0

如果您知道id其中默認選中值可用,你可以將其包含在範圍變量和

<option value="">{{selectedType}}</option> 

$scope.selectedType= categoryval.Jewelery_And_Diamond_Type[defaultIndex].valu‌​e 
注入變量

value =「」幫助您填寫空的第一個選項

+0

這個場景jsfiddle會怎麼做。net/hn3taeeo/24 – Ben10

0

在選擇中,ng模型將決定選擇哪個選項。

所以,如果你想嚴格通過其在數組中的索引,以選擇一個項目,你需要創建對象模型,像這樣:

$scope.selected = $scope.values[0]; 

值是您的JSON數組。

然後選擇看起來像:

<select 
     ng-model="selected" 
     ng-options="option.value for option in values track by option.id"> 
    </select> 

不要在HTML中使用NG-初始化,這是不好的做法。

function MyController() { 
 
    this.values = [ 
 
    { 
 
     "id": 33, 
 
     "value": "Earrings" 
 
    }, 
 
    { 
 
     "id": 35, 
 
     "value": "Gemstones" 
 
    }, 
 
    { 
 
     "id": 34, 
 
     "value": "Loose Diamonds" 
 
    }, 
 
    { 
 
     "id": 32, 
 
     "value": "Necklaces" 
 
    }, 
 
    { 
 
     "id": 31, 
 
     "value": "Pendants" 
 
    }, 
 
    { 
 
     "id": 30, 
 
     "value": "Rings" 
 
    } ]; 
 
    this.selected = this.values[0]; 
 
    }; 
 

 
angular.module('app', []); 
 
angular.module('app') 
 
    .controller('MyController', MyController);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script> 
 
<div ng-app="app"> 
 
    <div ng-controller="MyController as ctrl"> 
 
    <select 
 
     ng-model="ctrl.selected" 
 
     ng-options="option.value for option in ctrl.values track by option.id"> 
 
    </select> 
 
    <br> 
 
    {{ctrl.selected | json}} 
 
    </div> 
 
</div>

+0

對於這種情況,這將如何實現http://jsfiddle.net/hn3taeeo/24/ – Ben10

+0

請參閱[這裏](http://jsfiddle.net/Kunalh/hn3taeeo/26/)。 「學校1」和「校園1」默認選擇 – Nishant123

+0

@Ben10這與您的原始問題完全不同。 – gyc

0

刪除NG-init和在控制器中設置默認值,這樣就可以進行單元測試默認選項是始終你希望它是什麼。

在控制器:

$scope.defaultValue = $scope.SelectValues.Jewelery_And_Diamond_Type[0]; 

然後更改HTML

<select ng-model="defaultValue" ng-options="option.value for option in SelectValues.Jewelery_And_Diamond_Type track by option.id"> 

Plunker

+0

這種情況下會怎麼做jsfiddle.net/hn3taeeo/24 – Ben10