2015-07-17 17 views
5

Questo è il mio modal-profile.htmlnon possono recuperare i valori da modale utilizzando ng-modello ionica

<ion-modal-view> 
     <form name="itemEdit" novalidate> 
      <ion-header-bar class="bar-positive fix-buttons"> 
       <div class="row"> 
       <a class="button " ng-click="closeModal()">Cancel</a> 
       <h1 class="title ">Diary</h1> 
      </div> 
      </ion-header-bar> 
      <ion-content has-bouncing="true"> 
       <div class="row" ng-class="{'no-padding-top': !data.editItem}"> 
       <div class="col"> 
        <label class="item item-input large"> 
        <input type="text" placeholder="Title" ng-model="modelTitle"> 
        </label> 
       </div> 
       </div> 

      <div class="row description-row"> 
       <div class="col"> 
        <label class="item item-input text"> 
        <textarea placeholder="Description" rows="5" ng-model="modelDescription" ng-Required="true" lose-focus-on-return></textarea> 
        </label> 
       </div> 
       </div> 


       <button class="button" ng-click="addDetail()">ADD</button> 

       <div class="row charity-row"> 
       <div class="col col-10 vert-center"> 
        <div class="charity large"></div> 
       </div> 
       </div> 


      </ion-content> 
      </form> 
     </ion-modal-view> 

Questo è il mio controller

.controller('ChatsCtrl', function($scope,$ionicModal, Chats,$state,$cordovaSQLite) { 

    $scope.chats = Chats.all(); 
    $scope.remove = function(chat) { 
     Chats.remove(chat); 
    } 

    $ionicModal.fromTemplateUrl('templates/modal-profile.html', { 
     scope: $scope, 
     animation: 'slide-in-up' 
    }).then(function(modal){ 
     $scope.modal = modal 
    }) 

    $scope.openModal = function(){   
     $scope.modal.show(); 
    } 

    $scope.addDetail = function(){ 

     alert($scope.modelTitle); 
     alert($scope.modelDescription); 

     var db = $cordovaSQLite.openDB("diary.db"); 
     var query = "INSERT INTO details (title, description) VALUES (?,?)"; 

     $cordovaSQLite 
      .execute(db, query, [$scope.modelTitle, $scope.modelDescription]) 
      .then(function(res){ 
       alert("success"); 
      }, function(err){ 
       alert(err); 
      }); 
    } 
}) 

Voglio passare i parametri modelTitle, modelDescription a 'ChatCtrl'controller. Così ho inserito due avvisi nella funzione addDetail() per controllare. Ma questi non mostrano alcun valore. Qualcuno può aiutarmi? grazie in anticipo!

+1

provare a mettere console.log ($ portata) e vedere se le strutture stato definito quando si chiama la funzione. –

+0

Grazie mille per il commento. In realtà ho trovato una soluzione per questo. – HRCJ

+0

http://codepen.io/ionic/pen/gblny – HRCJ

risposta

10

Fino a quello che ho usato, invece di usare una stringa in ng-model prova con un oggetto per legare e recuperare il valore. Qualcosa di simile

HTML:

 <div class="row" ng-class="{'no-padding-top': !data.editItem}"> 
     <div class="col"> 
      <label class="item item-input large"> 
      <input type="text" placeholder="Title" ng-model="obj.modelTitle"> 
      </label> 
     </div> 
     </div> 

    <div class="row description-row"> 
     <div class="col"> 
      <label class="item item-input text"> 
      <textarea placeholder="Description" rows="5" ng-model="obj.modelDescription" ng-Required="true" lose-focus-on-return></textarea> 
      </label> 
     </div> 
     </div> 


     <button class="button" ng-click="addDetail(obj)">ADD</button> 

JS:

$scope.addDetail=function(object){ 

      alert(object.modelTitle); 
      alert(object.modelDescription); 
} 

ho ottenuto questo con il riferimento Stack link here

+0

Grazie di lavoro di lot.it per me (Y) – HRCJ

+1

@HRCJ Utile regola pratica: SEMPRE utilizzare un punto in ngModel (https://www.youtube.com /watch?v=ZhfUv0spHCY&feature=youtu.be&t=32m51s) – JoeLinux