2017-02-09 3 views
0

J'essaie de transmettre une valeur à partir d'un ng-Dialog.Passer une valeur sur un bouton cliquer à l'intérieur d'un ng-Dialog

HTML:

<div class="col-md-12" style="text-align:center" ng-controller="getReservationController"> 
      <label ng-show="!data.length" >No reservations found!</label> 
      <div class="widget widget-table action-table" ng-repeat="reservation in data"> 
       <div ng-show="data.length" class="widget-content table-container" style="overflow:auto"> 

        <table ng-table="reservationsList" class="table table-striped table-bordered" wt-responsive-table style="font-size: smaller;text-align:center; display:block;overflow-x:scroll"> 
         <tr > 
          <td data-title="'#'">{{ $index+1 }}</td> 
          <td data-title="'Name'" ui-sref="employee.edit({id: reservation.employee.id})" sortable="'employee.name'" filter="{ 'employee.name': 'text' }" style="width:230px"> 
           <a ui-sref="employee.edit({id: employee.id})" tooltip="View or Edit employee" tooltip-trigger tooltip-animation="false" tooltip-placement="bottom" style="color:#23527c">{{reservation.employee.firstName +""+reservation.employee.lastName}}</a> 
          </td> 
<td data-title="'Reject'"> 
           <a tooltip="Reject employee" tooltip-trigger tooltip-animation="false" tooltip-placement="bottom" data-placement="left" data-toggle="tooltip" data-original-title="reject" ng-show="data.currentUser==reservation.account.programManager.id || data.role == 'HR'" ng-click="rejectEmployee"><svg class="glyph stroked cancel"><use xlink:href="#stroked-cancel" /></svg></a> 
          </td> 
         </tr> 
        </table> 
       </div> 
       <script type="text/ng-template" id="templateId"> 
        <div class="media-body act-media-body"> 
         <h5 class="success" style="color:red">Are you sure you want to reject this reservation?</h5> 
         If yes, please specify reason : <textarea type="text" ng-model="reservation.account.name" placeholder="test" style="height:100px;resize: none;"/> 
         <button class="ngdialog-button" ng-click="rejectEmployeeButton(reservation.employee.id)">Confirm</button> 
        </div> 
       </script> 
      </div> 
     </div> 

Le clic de bouton Rejeter l'intérieur de la table, la boîte de dialogue est à venir.

Controller:

myApp.controller('getReservationController', ['$scope', 'reservationServices', 'dataTable', '$rootScope', '$location', '$filter', 'ngDialog', '$window', function ($scope, reservationServices, dataTable, $rootScope, $location, $filter, ngDialog, $window) { 
    reservationServices.getReservations().then(function (result) { 
     $scope.data = result.data; 
     $scope.rejectEmployee = function() { 
      ngDialog.open({ 
       template: 'templateId', 
       closeByDocument: true, 
       closeByEscape: true, 
       preCloseCallback: function (value) { 

       }, 
       scope: $scope 
      }); 

     } 
     $scope.rejectEmployeeButton = function (id) { 
      reservationServices.rejectEmployee(id).then(function (result) { 
        ngDialog.openConfirm({ 
         template: 
          '<p>Rejected the employee!</p>', 
         plain: true, 
         className: 'ngdialog-theme-default' 
        }) 
        $location.path("/talents"); 
        }); 
     } 

J'ai remarqué que l'ID ne se passe sur le bouton clic: rejectEmployeeButton(reservation.employee.id)

est également confronté à un problème similaire tout en affichant les données qui se trouve dans la zone de texte dans la boîte de dialogue. Mais je peux comprendre une fois que je trouve une solution pour passer la valeur sur le bouton clic.

Qu'est-ce que je fais de mal?

Répondre

0

Une meilleure façon est de passer l'objet et accéder à l'identifiant à l'intérieur du contrôleur,

ng-click="rejectEmployeeButton(reservation)" 

Controller:

$scope.rejectEmployeeButton = function (reserObj) { 
    var id = reserObj.employee.id; 
} 
+0

"Impossible de lire la propriété 'employee' de undefined" ... ne pas obtenir l'objet dans le dialogue – Phoenix

+0

@Phoenix c'est le problème, vérifiez ce qui est passé. votre objet de réservation peut être vide – Sajeetharan

+0

Non, ce n'est pas le cas. result.data: Array [1] : Objet compte : objet createdOn : "2017-02-09T12: 31: 07,9387838" employé : objet id : remarque : "test" reservedFrom : "2017-02-27T00: 00: 00" reservedTill : « 2017-02-28T0 0:00:00" __proto__ : objet longueur : __proto__ : Array [0] clé: Phoenix

0

Vous pouvez définir le contrôleur pour OpenDialoge et écrire tout le code dans cette fonction de contrôleur.

ngDialog.open({ 
      template: 'templateId', 
      closeByDocument: true, 
      closeByEscape: true, 
      controller:function() 
      { 
       this.rejectEmployeeButton = function (id) { 

        rejectEmployeeButton(id); 

       }; 

      }, 

    rejectEmployeeButton=function() 
     { 
     // Do somthing open dialog 
     } 

Vous pouvez essayer comme ceci.

+0

comme ça? https://hastebin.com/nawizegove.php – Phoenix

+0

oui. Vous pouvez essayer cette méthode. – Wintergreen

+0

toujours pas en mesure d'extraire des données. son affichage comme indéfini .... – Phoenix