2013-04-30 16 views
5

Bir projede angularjs kullanmaya başladım. İşte bir görevim var. aşağıda HTMLAngularjs Seçilmiş Varsayılan Seçeneği Seç

<div> 
<label for="lastname">Bank Name :</label> 
<select ui-select2 ng-model="bank.id"> 
    <option></option> 
    <option ng-repeat="bank in banks" value="{{bank.id}}">{{bank.text}}</option> 
</select> 
</div> 

ben açılan tüm bankalar yineleme var. Kullanıcı seçer ve KAYDET'e basın. Kimliği doğru bir şekilde aldım ve DB'ye kaydettim. Kullanıcı geri döndüğünde, açılanın değerini seçtiği değere ayarlayamadım. Ben controller.js Ben XX Bankası bankID 11 letssay, bunu ayarlayabilirsiniz nasıl

$http.get('/AdServerLongTail/api/user'). 
success(function(data, status, headers, config) { 
    if(status == 200){ 
     $scope.id = (data["id"]);// user id     
     $scope.bank.id = (data["bankId"]);     
    } 
}). 
error(function(data, status, headers, config) { 
    alert("fail"); 
}); 

bunu?

cevap

15

ng-yinelemeyi bu şekilde kullanmamalısınız. NgOptions'a bakın. http://docs.angularjs.org/api/ng.directive:select

+2

Neden? ui-select2 ng seçenekleriyle çalışmaz. – shapeshifter

+0

Seni duyuyorum. Ancak, bir dış kütüphane bunu desteklemediği için, doğru olduğu anlamına gelmez. – Lander

+4

@Lander, Doğru olmadığını kabul ediyorum, ancak maalesef select2 kullanmanın tek yolu bu. Farklı bir şey bulabilir veya bu şekilde tutabilirsiniz. Direktiflerin ardındaki fikir, dahili olarak çalışma şeklini göstermeden bir API sağladığından, s2'ye erişmek için daha iyi bir yönerge yazmayı öneririm. İdeal dünyada, yönerge API'si ng-select ile çalışmalıdır. Ng-yinelemeyi kullanmak hiçbir şeyi kırmayacak ve bunu bir hack olarak görmeyeceğim. Beni daha çok rahatsız eden select2, açısal olarak korkunç derecede yavaş olabilir. –

2

Bunu buldum, o kadar kolay kaçırdım ki. İşte doğru kod.

<div> 
<label for="lastname">Bank Name :</label> 
<select ui-select2 ng-model="bank"> 
    <option></option> 
    <option ng-repeat="bank in banks" value="{{bank.id}}">{{bank.text}}</option> 
</select> 
</div> 

$http.get('/AdServerLongTail/api/user'). 
success(function(data, status, headers, config) { 
    if(status == 200){ 
     $scope.id = (data["id"]);// user id     
     $scope.bank = (data["bankId"]);     
    } 
}). 
error(function(data, status, headers, config) { 
    alert("fail"); 
}); 
+0

Açısal UI olmadan bunu yapmanın bir yolu var mı? Ben de üzerinde çalışıyorum. – elliottregan

+0

Tekrar iç içe yerleştirme seçeneklerini kullanma sorunlara neden olur ve düzenli açısal bağlanma ile düzgün çalışmaz. Bu tekniğin neden diğer Angular db'nin neden başarısız olduğuna karar vermem biraz zaman aldı ... – taudep

+0

Lütfen diğer cevabı doğru olarak işaretleyiniz. – uriDium

8

Bunun için yeni açılıyorum ve bunun için biraz uğraşıyorum. İşte bunu yapmaz basit bir etikettir ve ng-seçildiği:

<option ng-repeat="bank in banks" value="{{bank.id}}" ng-selected="'11' == bank.id" >{{bank.text}}</option> 

Ama yine: Dont o Lander tarafından tavsiye olarak bu şekilde yaparsak. <select>'da ng-options kullanın. Aksi halde modelde dropdown.assign bank.selected.id boş ilk seçenek ile sona erecek. (Burada vaka ng-modelinde olduğu bank.id.)

<select ng-model="bank.selected.id" ng-change="someAngularfunction()" ng-options=" (''+bank.id) as (bank.id +' - '+ bank.text) for bank in banks"> 
        <option value="">Select one</option> 
</select> 

Ayrıca seçenek değeri banka göstermez unutmayın -dizilerde seçenekler yerine, indeks olan seçenek değeri = "0" veya "1" veya "3" gösterecektir. Ancak açılır menüden seçilen değer bank.selected.id modeliyle ilişkilendirilecektir. Örneğin, bank.id = 11 (XX Bankası) için açılır değer seçilirse, bank.selected.id "11" olarak ayarlanır.

İlgili konular