2013-01-20 26 views
5

Bu işlem zaten yapılmış olmalı ve Angular'ın bu noktada nasıl çalıştığıyla ilgili bir şey eksik.İç içe geçmiş ng tekrarından bağlanan açısal ng-model

Kısacası, <select ng-model><option ng-repeat/></select> var ve sayfa yükleme sırasında varsayılan bir değer vermek nasıl bilmiyorum.

Görünüm:

<div ng-ctrl="MyCtrl"> 
    <form ng-submit="submitChoice()"> 
    <select ng-model='choice'> 
     <option ng-repeat='choice in choices' value='{{choice.id}}'>{{choice.id}}</option> 
    </select> 
    </form> 
</div> 

Yolu 1: Kullanıcı görünümü günceller zaman MyCtrl kullanılan $scope onu yakalıyor ('seçim' istediği seçin) ve ben onunla ne istersen gerçekleştirebilir:

yolu 2: Ama tersi, ben programlı (başlangıçta) denetleyicisinden seçimler için varsayılan değeri ayarlamak isterseniz, bu görüntülenen değeri değiştiremezsiniz:

function MyCtrl ($scope) { 
    $scope.submitChoice = function() {return;}; // Way1: OK! 
    $scope.choice = choice4;     // Way2: Doesn't change the view!! 
} 

Bunun nedeni, ng-yinelemedeki her öğenin kendi kapsamına sahip olmasından kaynaklandığından (bir ng-yinelemenin yerine görünümde seçenekleri sabitlediysem iyi çalışır).

Yol 1, eğer iyi anlaşılırsa, kullanım tarafından seçilen iç kapsam choice'u üst kapsama yayar. Ama nasıl yapılacağı hakkında hiçbir fikrim yok 2.

Basit bir şekilde yapılabilir mi? Bir direktif gerekli mi?

cevap

5

select yönergesiyle ng-options yönergesini kullanmaktan daha iyi olursunuz. Select + ngRepeat kullanımı her türlü sınırlamaya sahiptir ve bundan kaçınılmalıdır. ngRepeat ile seçenek oluşturmanın belirli bir nedeni var mı?

Daha fazla kod paylaşabiliyorsanız (özellikle veri modelinizin yapısı) daha fazla bilgi sağlayabiliyorum.

+0

İşte bu kadar! Doktora kayboldum, görmedim. İki kelimeyle, ihtiyacım olan şey basitçe ' – lajarre

İlgili konular