2013-04-03 4 views
10

Ich versuche, select2 Modell programmgesteuert zu aktualisieren und für die Ansicht zu aktualisieren, aber es scheint nicht zu funktionieren.Angular UI Select2 Direktive - Aktualisieren des Modells programmgesteuert nicht im Widget widergespiegelt

Hier ist eine Probe Plunker aus dem Angular UI Projekt gegabelt: http://plnkr.co/edit/kQROgr?p=preview

ich das Hinzufügen initSelection versucht() accroding select2 docs (http://ivaynberg.github.com/select2/ "Als Reaktion auf externe Wertänderungen"), aber das hat nicht funktioniert. Ich habe auch mit select2 3.3.2 versucht und das hat es auch nicht gelöst.

Es gibt zwei Probleme: 1) Klicken Sie auf "Update-Modell", das Modell aktualisiert, aber es fügt kein Tag zum select2 Widget. Auch 2) Klicken Sie auf "Update-Modell" und wählen Sie dann mit select2 ein zweites Tag aus, das erste von "Update-Model" hinzugefügte Tag verschwindet.

+0

Dies könnte helfen? https://github.com/angular-ui/angular-ui/issues/455 – DanB

+0

Konnten Sie dies zum Funktionieren bringen? Ich stoße auf dasselbe Problem. – testing123

+0

Argh Ich gab es den alten College-Versuch ... Ich weiß, es funktioniert für den Rekord, weil ich es überall in der App verwende, die ich erschaffe, und ich drücke externe Deta zu modal die ganze Zeit und es aktualisiert die select2, so dass ich ' Ich bin mir sicher, dass hier noch etwas anderes im Spiel ist ... – btm1

Antwort

0

Ich weiß, die Frage ist ein bisschen alt, aber hey ... Ich fand es und wusste nicht die Antwort.

schaffte ich es zu tun, was ich das Modell durch die Einrichtung und dann unter Hinweis auf initSelection() auf der select2Options Config

Also meine Config war wie so wollte:

$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 dann hatte mein modales das neu erzeugte Objekt wie folgt zurück:

Nachdem ich das Modell aktualisiert hatte, musste ich das select2-Widget manuell neu initialisieren. Ich denke, das könnte mit einem $ scope behandelt werden. $ Watch, wenn Sie wirklich wollen, aber das wäre wahrscheinlich eine Verschwendung, es sei denn, Sie haben die Eigenschaft von einigen Orten oder etwas aktualisiert.