2016-03-21 8 views
0

İki seçilmiş alanları, Ay diğeri (isim 'contactDetails' olduğu gibi denetleyicisi) Gün için bir tane var:

<select 
    data-ng-model="contactDetails.contactBasicInfo.bdmonth" 
    data-ng-options="bdMonth.key as bdMonth.value for bdMonth in contactDetails.months"> 
    <option value="">Month</option> 
</select> 
<select 
    data-ng-model="contactDetails.contactBasicInfo.bdday" 
    data-ng-options="bdDay.key as bdDay.value for bdDay in contactDetails.days"> 
    <option value="">Day</option> 
</select> 

O çıktı sadece iyi seçer ve bilgileri veritabanına kaydetmek için kullanabilirim. Orada sorun yok. Sorun, veritabanını veritabanından geri çektiğimde ve seçili alanların veritabanından çektiği değerleri yansıtması için güncelleştirilmesini istememdir. Yapmıyorlar. Değerleri denetleyiciye sabit olarak kodlarsam, bunlar güncelleştirilir, ancak değerler $ http aramasından sonra atanmaz.

ctrl.contactBasicInfo.bdmonth = 0; 
ctrl.contactBasicInfo.bdday = 0; 

Ve sonra ben sonra bu iki değişken değerler atayan bir işlevi çağırmak:

ctrl.contactBasicInfo = data.contactInfo.contactBasicInfo; 

Tüm diğer

Ben varsayılan kurmak için kumandanın üstündeki bu var data.contactInfo.contactBasicInfo'dan çıkan veriler ve firstName, telefon, e-posta vb. gibi alanlar güncellendi. Eğer modelleri {{ctrl.contactBasicInfo.bdmonth}} gibi html'ye yerleştirirseniz, doğru değerleri gösterecektir. Yani, değerlerin $ http çağrısından doğru geri geldiğini biliyorum. Seçimler yeni değerleri yansıtmak için değişmez.

Eksik olduğum herhangi bir fikir var mı?

Teşekkürler!

+0

olası kopyası: http://stackoverflow.com/questions/19872387/in-angularjs-how-do-you-get-a-select-to-refresh-when-the-array-for-ng-options – JanR

+0

Bu örnekte 'track by' yardımını kullanmalı mıyım? – Lex

+0

@JanR Aynı şey hakkında konuştuğumuzu sanmıyorum. Seçimi oluşturan dizi asla değişmez, sadece seçilen değer yapar. – Mattaton

cevap

0

<select> öğesi yönergesi ngModel yönergesi, bağlanırken === karşılaştırmasını kullanır. Bu nedenle 0 === '0' yanlış döndürecektir. Bu nedenle, açılana ekli ngModel numaranıza bir sayı/tam sayı değil bir dize atamalısınız.

+0

Öyleyse, ayın günü için bir sayı dışında hangi değeri kullanırım? Dediğim gibi, varsayılan bdmonth değeri için = 0 ila = 3 değiştirirsem, seçim Mart olarak değişir. Ancak, http değerini döndürür ve değeri 3 olarak ayarlarsa, hiçbir şey yapmaz. Yani değerler için rakamlar işe yarıyor, değil mi? Yoksa sadece numaraya tırnak koymam gerektiğini mi söylüyorsun? – Mattaton

+0

$ http çağrısı tarafından döndürülen tamsayıda javascript toString() işlevini kullanın. – amcpanaligan

+0

Gotcha. Bunu bir atış yapacağım. Teşekkürler. – Mattaton