Aggiungo un Modular UI angolare dove sto passando l'ambito alla finestra modale per il binding a 2 vie. Ho usato il metodo resolve
per passare il valore dell'ambito. Questo funziona in un certo senso quando il valore del modello ng cambia in genitore, riflette all'interno della finestra modale. Tuttavia, se il valore cambia all'interno della finestra modale, non si riflette nel modello gen ng. Ecco il mio codice:Connessione UI modale a 2 vie non funzionante
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;
};
Perché isint il modo 2 legame tra genitore e l'istanza modali non funziona nel codice sopra?
Dove ci si aspetta effettivamente di vedere l'associazione bidirezionale, dove si stampa '{{textbox}}'? Se questo è il caso, non stai più agendo su '$ scope.textbox' una volta che sei nel modale, stai creando una copia di' $ scope.textbox' quando lo passi come '_ngModel' e poi tu l'oggetto modal '$ scope' è' $ scope.ngModel' ...Prova a stampare '{{ngModel}}' sul genitore e vedi cosa succede – Tom
È meglio passare $ scope come parametro di opzione in modali aprire la funzione – Armen
@Tom Quando ho detto il binding a 2 vie, cosa intendevo dire che voglio il testo casella di input nella finestra principale e modale per modificare se uno qualsiasi di questi valori cambia. Per esempio, nel mio esempio, il modello -g per 'input' in parent e' input' in modal window è lo stesso. Quindi quando digito qualcosa in genitore 'input' e poi apro il modal, posso vedere il modale' input' che ha lo stesso valore. Ma quando digito qualcosa all'interno di 'input' dell'istanza modale, non lo aggiorna sull'input genitore. Quando quei 2 sono legati dallo stesso modello-ng, non dovrebbero aggiornarlo? – Neel