Ich füge ein Angular UI Modal hinzu, wo ich den Scope durch das Modal Window für 2-Wege-Bindung führe. Ich habe die Methode resolve
verwendet, um den Wert des Bereichs zu übergeben. Dies funktioniert, wenn der ng-Modellwert sich im Parent ändert und im modalen Fenster reflektiert wird. Wenn sich der Wert jedoch innerhalb des modalen Fensters ändert, spiegelt er sich nicht im übergeordneten ng-Modell wider. Hier ist mein Code:Angular UI Modale 2-Wege-Bindung funktioniert nicht
HTML:
<div ng-app="app">
<div ng-controller="ParentController">
<br />
<input type="text" ng-model="textbox.sample" />
<a class="btn btn-default" ng-click="open(textbox.sample)">Click Me</a>
<script type="text/ng-template" id="ModalContent.html">
<input type = "text" ng-model= "ngModel"/>
</script>
<br />{{ textbox }}
</div>
</div>
Controller:
var app = angular.module('app', ['ui.bootstrap']);
app.controller('ParentController', function ($scope, $modal) {
$scope.textbox = {};
// MODAL WINDOW
$scope.open = function (_ngModel) { // The ngModel is passed from open() function in template
var modalInstance = $modal.open({
templateUrl: 'ModalContent.html',
controller: ModalInstanceCtrl,
resolve: {
ngModel: function() {
return _ngModel;
}
} // end resolve
});
};
});
var ModalInstanceCtrl = function ($scope, $modalInstance, ngModel) {
$scope.ngModel = ngModel;
};
Warum iSINT die 2-Wege-Bindung zwischen Eltern und modal Instanz nicht in dem obigen Code zu arbeiten?
Wo erwartest du eigentlich, dass die Zwei-Wege-Bindung passiert, wo du '{{textbox}} '' druckst? Wenn das der Fall ist, handeln Sie nicht mehr in '$ scope.textbox', sobald Sie im modalen Modus sind, erstellen Sie eine Kopie von' $ scope.textbox', wenn Sie sie als '_ngModel' und dann Sie übergeben modal $ scope ist $ scope.ngModelVersuchen Sie, '{{ngModel}}' auf dem Elternteil zu drucken und sehen Sie, was passiert – Tom
Es ist besser $ scope als Optionsparameter in modals zu übergeben open Funktion – Armen
@Tom Wenn ich 2-Wege-Bindung sagte, was ich damit meinte, will ich den Text Box-Eingabe im übergeordneten und modalen Fenster, um zu ändern, wenn sich einer dieser Werte ändert. Zum Beispiel ist in meinem Beispiel das ng-Modell für "Eingabe" in Eltern und das "Eingabe" im modalen Fenster das gleiche. Wenn ich also etwas in die Elterneingabe eingib und dann das Modal öffne, kann ich sehen, dass die modale Eingabe den gleichen Wert hat. Aber wenn ich etwas in die 'Eingabe' der modalen Instanz eintippe, wird es nicht über die Elterneingabe aktualisiert. Wenn diese 2 vom selben ng-Modell gebunden werden, sollte es nicht aktualisiert werden? – Neel