• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

291
Views
Pasar datos a mdDialog


La página de listado principal tiene un botón de edición. Que abre los detalles de la fila editada.
Way-1: ahora, si configuro "ctrl.parent.q_details.client_location", se vincula con el controlador de listado principal y funciona como un enlace bidireccional y cambia automáticamente los valores como en los cambios del cuadro de edición, lo cual no es un requisito aquí. .
Aquí solo quiero mostrar y permitir editar valores en el cuadro de entrada. No quiero que me cambien en el controlador principal.

► El siguiente es el código en el controlador principal para llamar a mdDialog

 $mdDialog.show({ locals:{parent: $scope}, clickOutsideToClose: true, controllerAs: 'ctrl', templateUrl: 'quotation/edit/',//+edit_id, controller: function () { this.parent = $scope; }, });

► El siguiente es el código de la ventana emergente mdDialog.

 <md-dialog aria-label=""> <div ng-app="inputBasicDemo" ng-controller="deliverController" layout="column"> <form name="" class="internal_note_cont"> <md-content class="md-padding"> <md-input-container class="md-input-has-value" flex> <label>Client Name</label> <input ng-model="qe.client_name" required > </md-input-container> <md-input-container flex> <label>Client Location</label> <input required ng-model="ctrl.parent.q_details.client_location"> </md-input-container> </md-content> </form> <div> </div> </div> <input type="" required ng-model="ctrl.parent.q_details.recid"> </md-dialog>



Way2: la segunda forma es enviar el valor directamente desde la base de datos sin vincularlo al modelo ng del controlador Dialog (deliverController).

 ]).controller("deliverController", ["$scope", "$filter","$http","$route","$window","$mdDialog", function ($scope, $filter,$http,$route,$window,$mdDialog) { $scope.qe.client_name = '12345'; // just to test. }

Esto está dando un error de undefine $scope.qe.

Entonces, en última instancia, no puedo enviar datos a mdDialogue y mostrarlos y permitir editarlos de manera normal. Por favor, cualquier tipo angular experimentado que me ayude. Soy nuevo en angular. Estoy intentando diferentes maneras desde hace 2 días.

about 3 years ago · Santiago Trujillo
3 answers
Answer question

0

Este chico siempre tiene la respuesta correcta: https://github.com/angular/material/issues/455#issuecomment-59889129

En breve:

 $mdDialog.show({ locals:{dataToPass: $scope.parentScopeData}, clickOutsideToClose: true, controllerAs: 'ctrl', templateUrl: 'quotation/edit/',//+edit_id, controller: mdDialogCtrl, }); var mdDialogCtrl = function ($scope, dataToPass) { $scope.mdDialogData = dataToPass }

Pase la variable usando el atributo locals en el objeto que pasa. Estos valores se inyectarán en el controlador, no en el $scope . Además, pasar todo el alcance de $ del padre podría no ser una buena idea, ya que derrota el paradigma de alcance aislado.

about 3 years ago · Santiago Trujillo Report

0

HTML

 <md-button ng-click='vmInter.showDialog($event,_dataToPass)'> <i class="fa fa-custom-edit" aria-hidden="true"></i> </md-button>

js

 function _showSiebelDialog(event,_dataToPass) { $mdDialog.show({ locals:{dataToPass: _dataToPass}, //here where we pass our data controller: _DialogController, controllerAs: 'vd', templateUrl: 'contentComponents/prepare/views/Dialog.tmpl.html', parent: angular.element(document.body), targetEvent: event, clickOutsideToClose: true }) .then( function(answer) {}, function() { } ); }; function _DialogController($scope, $mdDialog,dataToPass) { console.log('>>>>>>> '+dataToPass); }
about 3 years ago · Santiago Trujillo Report

0

$scope.showPrompt = function(yourObject) { $mdDialog.show({ templateUrl: 'app/views/your-dialog.tpl.html', locals: { callback: $scope.yourFunction // create the function $scope.yourFunction = function (yourVariable) { }, controller: function ($scope, $mdDialog, callback) { $scope.dialog.title = 'Your title'; $scope.dialog.abort = function () { $mdDialog.hide(); }; $scope.dialog.hide = function () { if ($scope.Dialog.$valid){ $mdDialog.hide(); callback($scope.yourReturnValue, likes the return of input field); } }; }, controllerAs: 'dialog', bindToController: true, clickOutsideToClose: true, escapeToClose: true });

};

about 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error