2014-09-08 2 views
9

Ho un controller che crea una finestra di dialogo con ngDialog.open. Assegno scope: $ scope e imposta variabili scope con ng-model nella finestra di dialogo $ popup. Tuttavia, i valori non sono impostati nel controller $ scope. La funzione ng-click è in grado di chiamare una funzione in $ scope.

C'è qualcosa che mi manca, ho cercato un bel po 'qui e github, ho letto i documenti e ho lavorato con tutti gli esempi forniti su github nel progetto.

JS Fiddles di seguito spiega. Mostra che l'ambito: $ scope non è quello che sembra per .open(). È un collegamento unidirezionale e non torna a $ scope. .openConfrm() sembra avere il comportamento previsto.

ngDialog.open() - http://jsfiddle.net/s1ca0h9x/ (FISSO !! funziona come previsto)

ngDialog.openConfirm() - http://jsfiddle.net/tbosLoa9/ (funziona come previsto)

var myApplication = angular.module('myApplication', ['ngDialog']); 

myApplication.controller('MainController', function ($scope, ngDialog) { 
$scope.FormData={newAccountNum:''}; 
$scope.ShowNgDialog = function() { 
    ngDialog.open({    
     template: '<div><input type="text" ng-model="FormData.newAccountNum"/></div>', 
     plain: true, 
     scope:$scope 

    }); 
}  

});

+1

come circa un [jsfiddle] (http: //jsfiddle.net) o [plunker] (http://plnkr.co/edit/?p=preview)? – bluetoft

+0

Sto lavorando ad un esempio di jsfiddle. – howserss

+0

Ho anche posto questa domanda al proprietario di ngDialog https://github.com/likeastore/ngDialog/issues/74 – howserss

risposta

13

Ho modificato il post originale e ha aggiunto sottostante. Il collegamento FIXED lo mostra funzionante e il secondo lo mostra interrotto. L'aggiunta di un punto (usando un oggetto javascript) risolve il problema.

ngDialog.open() - http://jsfiddle.net/s1ca0h9x/ (FISSO !! funziona come previsto)

ngDialog.openConfirm() - http://jsfiddle.net/tbosLoa9/ (funziona come previsto)

var myApplication = angular.module('myApplication', ['ngDialog']); 

myApplication.controller('MainController', function ($scope, ngDialog) { 
    $scope.FormData={newAccountNum:''}; 
    $scope.ShowNgDialog = function() { 
     ngDialog.open({    
      template: '<div><input type="text" ng-model="FormData.newAccountNum"/></div>', 
      plain: true, 
      scope:$scope 

     }); 
    }  
});  
+0

deve essere un modello semplice? che ne dici di usare il file html come modello? Ho provato a utilizzare file esterno ma non funziona –

+0

Mostrano esempi di modelli che utilizzano file html esterni sul sito github di ngDialog. Usa lo stesso modello: parametro. Esempio di modello: 'external.html' – howserss

+0

Ricevo lo stesso problema di werd, la variabile non viene aggiornata nel controller principale.Quindi non possiamo usare variabili da $ scope che non sono oggetto (come $ scope.newAccountNum)? – AlainIb

0

ngDialog passa portata con le proprietà di qualsiasi tipo - http://jsfiddle.net/akgdxhd0/

var myApplication = angular.module('myApplication', ['ngDialog']); 

myApplication.controller('MainController', function ($scope, ngDialog) { 
    $scope.accountNum = ''; 
    $scope.ShowNgDialog = function() { 
    ngDialog.open({    
     template: '<div><input type="text" ng-model="accountNum"/></div>', 
     plain: true, 
     scope: $scope 
    }); 
    };  
}); 
+0

Dovresti controllare il tuo esempio contro il mio. Almeno su safari e IE bind a due vie non funziona con il tuo jsfiddle. I miei esempi funzionano ora. Dopo aver aperto la finestra di dialogo e aver digitato il campo di input che è la differenza tra il tuo esempio e il mio. Provaci. – howserss

+0

come passare vm all'ambito, non sto usando $ scope nel controller. ho provato lo scope: vm. ma non lavoro. – Arash

+0

il tuo violino non funziona per me su mozilla. modifico i dati nel popup ma l'accountNum non è aggiornato nel controllore genitore! – AlainIb