Uso materiale angolare nel mio progetto. Uso molte finestre di dialogo (solo per scopi di avviso), ma ora richiedo una finestra di dialogo abbastanza complessa.Come utilizzare lo stesso controller con una finestra di dialogo Materiale angolare?
Questo è l'esempio che il sito Materiale angolare utilizza:
function showDialog($event) {
var parentEl = angular.element(document.body);
$mdDialog.show({
parent: parentEl,
targetEvent: $event,
template: '<md-dialog aria-label="List dialog">' +
' <md-dialog-content>' +
' <md-list>' +
' <md-list-item ng-repeat="item in items">' +
' <p>Number {{item}}</p>' +
' ' +
' </md-list-item></md-list>' +
' </md-dialog-content>' +
' <md-dialog-actions>' +
' <md-button ng-click="closeDialog()" class="md-primary">' +
' Close Dialog' +
' </md-button>' +
' </md-dialog-actions>' +
'</md-dialog>',
locals: {
items: $scope.items
},
controller: DialogController
});
function DialogController($scope, $mdDialog, items) {
$scope.items = items;
$scope.closeDialog = function() {
$mdDialog.hide();
}
}
}
Invece, sarebbe possibile non fare riferimento a un controller
per il $mdDialog
, e consentire solo in modo da utilizzare lo stesso controllore dove era chiamato da?
Ad esempio, se viene richiamato tramite questo pulsante, la finestra di dialogo utilizza semplicemente il controller MyCtrl
in modo che la finestra di dialogo possa accedere alle variabili di ambito.
<div ng-controller="MyCtrl">
<md-button ng-click="showDialog($event)" class="md-raised">
Custom Dialog
</md-button>
</div>
È questa una possibilità? O devo utilizzare continuamente la proprietà locals
insieme alla trasmissione per mantenere le variabili di passaggio avanti e indietro?
utilizzare il nome del controller genitore : $ mdDialog.show ({ controller: MyCtrl}); – Sandeep
@Sandeep - Ma non creerebbe una nuova istanza di quel controller? Quindi creando un nuovo ambito per quella finestra di dialogo? – Fizzix