Ich habe mit ng-Optionen ausgewählt, es verwendet Daten von einem der Controller. Die Daten sind zweidimensionale Anordnung von Ajax auf App mit Schlüssel-Wert-Paaren wie Start Introduction:Angular.js - Ansicht-ng-Optionen nach Änderung der Daten aktualisieren
'option1' : array[ 1: "Test", 2: "Test2" ],
'option2' : array[ 12: "abc", 26: "zyc" ],
'option3' : array[ 14: "fdfd", 27: "fdf" ],
'option4' : array[ 15: "dff", 28: "dffd" ],
und Aussicht:
<select name="selectedLink" id="selectedLink" ng-model="selectedLink" ng-options="key as value for (key , value) in links[selectedType]" ng-change="changeLinkName()" placeholder="Please Select" class="annotation-element">
Alles funktioniert in app Start in Ordnung, aber es gibt Problem nach meinem ändern verbindet Array. Der Benutzer kann neues Element hinzufügen, und es sieht aus wie:
// Watch new element variables
$scope.addNewElement = function() {
var newElement = $('#inputElementId').val();
// (...)
$scope.links[newElement[0]][newElement[1]] = newElement[2];
$scope.selectedLink = newElement[1];
// (...)
};
Das Problem ist, dass Ansicht nicht aktualisiert. Es gibt immer noch nur alte Links-Array-Daten in ausgewählten Optionen. Ich habe versucht, $ scope. $ Apply, aber es funktioniert nicht.
Ich kann alle Optionen nur mit jquery "neu zeichnen", aber dann kann ich nicht ng-model, ng-change usw. verwenden. Wie soll ich die Refresh-UI nach Änderung der Array-Daten auslösen?
schreiben Sie bitte eine Geige, wenn möglich. Was ich auch sehe, ist, dass Sie 'var newElement = $ ('# inputElementId') verwenden. Val();' - Ich verstehe nicht, warum Sie nicht den Ansatz 'directive' oder' 'binding'' verwenden - der Hauptvorteil von Angular. –
Ich benutze verstecktes Feld wegen Daten "Übertragung". Meine App läuft in iframe, und Feld wird von der übergeordneten Funktion nach anderen iframe-Interaktion - Seite mit dem Laden von Formularen von fancybox, nach dem Speichern von Daten durch das Hauptfenster zu eckigen App iframe gesetzt. –