2013-04-03 12 views
10

Program2'ye select2 modelini güncellemeye çalışıyorum ve görünümün yenilenmesini sağlamaya çalışıyorum ama işe yaramıyor.Açısal UI select2 yönergesi - modelin program aracılığıyla yansıtılmadığını programlı olarak güncelleştirme

İşte Açısal UI projesinden çatallı bir örnek plunker var: http://plnkr.co/edit/kQROgr?p=preview

denedim initSelection (ekleme) Select2 docs accroding (http://ivaynberg.github.com/select2/ "dış değer değişikliklere tepki gösteren"), ancak bu işe yaramadı. Ayrıca select2 3.3.2 ile çalıştı ve bunu da çözmedi.

İki sorun var: 1) "Güncelleştirme Modeli" ni tıklayın, model güncelleştiriliyor ancak select2 widget'ına etiket eklemiyor. Ayrıca 2) "Güncelleme Modeli" ni tıklayın ve sonra ikinci bir etiketi seçmek için select2'yi kullanın, "Güncelleme Modeli" tarafından eklenen ilk etiket kaybolur.

+0

Bu yardımcı olabilir? https://github.com/angular-ui/angular-ui/issues/455 – DanB

+0

Bu çalışmayı başarabildiniz. Aynı konuya koşuyorum. – testing123

+0

Argh Eski kolej denemeyi yaptım ... Bildiğim uygulama üzerinden kullandığım herşeyi kullanıyorum ve her zaman modalime harici deta itiyorum ve bu yüzden select2'yi güncelliyorum. Eminim oyunda başka bir şey var ... – btm1

cevap

0

Sorunun biraz eski olduğunu biliyorum ama hey ... Onu buldum ve cevabı bilmiyordum.

$scope.select2Options = { 
allowClear: true 
minimumInputLength: 3 
quietMillis: 1000 
initSelection: -> 
    $scope.property 
query: (query)-> 
    Properties.query({q: query.term}, (response)-> 
    data = {results: processData(response['properties'])} 
    query.callback(data) 
    ) 

    processData = (data)-> 
    results = [] 
    angular.forEach(data, (item, index)-> 
     results.push(item) 
    ) 
    return results 

}

I:

ben

Yani benim yapılandırma şöyle oldu select2Options yapılandırmasına initSelection() hatırlatarak sonra model kurma ve tarafından ne istediğini yapmayı başardı sonra yeni oluşturulan nesneyi şu şekilde değiştirdim:

modalInstance.result.then((result)-> 
    $scope.property = result 
    $scope.select2Options.initSelection() 
) 

Temel olarak, modeli güncelledikten sonra, select2 widget'ini manuel olarak yeniden başlatmak zorunda kaldım. Bu gerçekten eğer istediyseniz $ scope. $ Watch ile ele alınabileceğini düşünüyorum ama bir kaç yerden veya bir şeyden güncelleme olana sahip olmadıkça bu muhtemelen bir atık olacaktır.

İlgili konular