Sto usando la sintassi controllerAs per evitare un brodo $ scope nei miei controller e anche usando ui.bootstrap per presentare una vista modale.Passa l'ambito corrente a modalInstance quando si utilizza la sintassi controllerAs
Ho bisogno di aprire un modalInstace che condivide lo stesso ambito del controller corrente. Quando si inietta il campo di applicazione, probabilmente si potrebbe fare qualcosa di simile:
var modalInstance = $uibModal.open({
templateUrl: 'addEditModal.html',
scope: $scope
});
Tuttavia, come non sto iniettando il campo di applicazione, e utilizzando la sintassi controllerAs, che non funzionerà.
Da quello che ho trovato, è necessario utilizzare la risoluzione per passare i dati, ma è necessario passarlo esplicitamente tramite le funzioni. C'è un modo per passare l'intero ambito?
C'è un sacco di cose che devo fare in quel modale e il passaggio di carichi di dati sembra eccessivo.
non si vuole fare questo, come sembra disordinato ...
var modalInstance = $modal.open({
templateUrl: 'myModalContent.html',
controller: 'ModalInstanceCtrl',
resolve: {
user: function() {
return vm.user;
},
something: function() {
return vm.something;
},
blah: function() {
return blah;
}
}
});
un'idea migliore?
Questa soluzione richiede di iniettare $ scope al controller. Questo è ciò che cerchiamo di evitare. – Bendim
@Bendim Come detto nella risposta, non inserisce l'ambito ma specifica l'ambito genitore per il controller modale. Può essere un '$ scope' o un scope = $ rootScope. $ New()' di un controller in qualche servizio. '$ uibModal' è stato progettato per funzionare in questo modo. Chi è "noi"? Se hai problemi simili, sentiti libero di postare una domanda che rifletta il tuo caso particolare. – estus
Sembra la metà della risposta. devi quindi inserire $ scope nel controller modale, quindi puoi accedere alle variabili dell'ambito padre come $ scope.controllerasname.variable – nuander