2016-05-28 35 views
5

ho un problema con il dialogo md materiale. Questa è una codepen (http://codepen.io/anon/pen/EyxyXj) della mia applicazione. Quando apro la finestra di dialogo, quindi faccio clic su "Salva", creo una scheda. Perché i dati nel mio modulo di immissione non vengono salvati nella carta? Penso che ci siano alcuni problemi con l'ambito. Qualcuno può aiutarmi?Come utilizzare la finestra di dialogo md con modulo di input in angularjs?

.then(function(answer) { 
     questList.allsQ.push({ 
     titolo: questList.titolo , 
     capitolo: questList.capitolo, 
     descrizione: questList.descrizione, 
     importo: questList.importo, 
     data: questList.data 
     }); 
     questList.titolo = ''; 
     questList.capitolo = ''; 
     questList.descrizione = ''; 
     questList.importo = ''; 
     questList.data = ''; 
} 

La funzione "push" funziona, ma tutte le proprietà non sono definite dopo aver fatto clic su Salva. Grazie a tutti.

risposta

2

Correggere ng-modello del campo di input in html, come di seguito

<md-input-container class="md-block" flex-gt-xs=""> 
    <label>Titolo</label> 
    <input ng-model="questList.titolo" size="30" placeholder="inserisci il titolo"> 
</md-input-container> 

È necessario passare i dati aggiornati nel modello di nascondere() funzionano come di seguito.

.controller('DemoCtrl', function($scope, $mdDialog, $mdMedia) { 
    $scope.status = ' '; 
    var questList = this; 
    questList.allsQ = []; 
    questList.openDialog = function($event) { 
     $mdDialog.show({ 
     controller: function ($timeout, $q, $scope, $mdDialog) { 
       var quest =this; 
       // you will be returning quest 

       $scope.cancel = function($event) { 
       $mdDialog.cancel(); 
       }; 
       $scope.finish = function($event) { 
       $mdDialog.hide(); 
       }; 
       $scope.answer = function() { 
       //pass quest to hide function. 
       $mdDialog.hide(quest); 
       }; 
       }, 
     controllerAs: 'questList', 
     templateUrl: 'dialog.tmpl.html', 
     parent: angular.element(document.body), 
     targetEvent: $event, 
     clickOutsideToClose:true, 
     locals: {parent: $scope}, 
     }) 
    .then(function(quest) { 

     //here quest has data you entered in model 
     questList.allsQ.push({ 
     titolo: quest.titolo , 
     capitolo: quest.capitolo, 
     descrizione: quest.descrizione, 
     importo: quest.importo, 
     data: quest.data 
     }); 
     questList.titolo = ''; 
     questList.capitolo = ''; 
     questList.descrizione = ''; 
     questList.importo = ''; 
     questList.data = ''; 
     console.log(questList.allsQ); 
     console.log(questList.allsQ.length); 
    }); 
    }; 
    }); 
+0

grazie mille! – litas

2

La risposta che sto per fornire non è sicuramente la risposta migliore, ma è qualcosa che funziona

rimuovere il ng-presentare dal modello MD-finestra sul pulsante Salva aggiungere un ng-click="answer(questList)" e fare la vostra spinta come questo

questList.allsQ.push({ 
    titolo: answer.titolo , 
    capitolo: answer.capitolo, 
    descrizione: answer.descrizione, 
    importo: answer.importo, 
    data: answer.data 
    }); 

c'è l'esempio i biforcato tua codepen

http://codepen.io/tougo/pen/QEWGKv

+0

grazie mille! – litas