Ich versuche, das jQuery Multiselect-Plugin mit einer Direktive in meiner App zu implementieren. Hier das select-Element:Wie kann ich feststellen, wann ng-options die Aktualisierung des DOM abgeschlossen hat?
<select multiple
ng-model="data.partyIds"
ng-options="party.id as party.name for party in parties"
xs-multiselect="parties">
</select>
Das Modell parties
Modell durch $ http geladen wird. Das MultiSelect-Plugin analysiert die option
Elemente innerhalb der select
und generiert die nette Multi-Auswahl.
Gibt es eine Möglichkeit festzustellen, wenn das Element select
mit Optionen gefüllt ist, damit ich dem Multiselect-Plugin mitteilen kann, seine Daten zu aktualisieren?
Hier ist meine Richtlinie:
machineXs.directive("xsMultiselect", function() {
return {
restrict: "A",
require: '?ngModel',
link: function(scope, element, attrs, ngModel) {
element.multiselect().multiselectfilter();
scope.$watch(scope[attrs["xsMultiselect"]], function() {
// I tried watching but it doesn't help
element.multiselect('refresh');
element.multiselectfilter("updateCache");
});
}
}
});
In Ihrem $ Uhr, versuchen $ timeout Aufruf - das heißt, legen Sie die Multiselect Sachen innerhalb einer Timeout-Callback-Funktion. Dies könnte der Option ng-options die Möglichkeit geben, die Optionen auszuführen und dem DOM hinzuzufügen. –
Es funktioniert nicht. Habe ich die $ Uhr richtig eingestellt? – lucassp
Es sieht gut aus für mich. Ich war mir nicht sicher, ob mein Vorschlag funktionieren würde. Angular hat wirklich keine Möglichkeit zu signalisieren, wenn das Rendering abgeschlossen ist. Manchmal funktioniert $ timeout, aber nicht immer. –