2016-04-23 94 views
0

我有兩個功能,一個用於打開對話框,一個用於發佈數據到服務器上,然後關閉該對話框,問題是我不能關閉對話框,在這裏我們的代碼關閉ngDialog在控制器

vm.openCreateDialog = function() { 

       var Dialog = ngDialog.open({ 
        template: 'user/create', 
        className: 'ngdialog-theme-default' 
       }) 
      } 
vm.createUser = function() { 
      DataService.createUser(vm.user).then(function (response) { 
       $log.log('promise returned successfully') 
       Dialog.close(); 

      }).catch(function (e) { 
       $log.log('catch registration error') 

      }); 
} 

回答

0

ngDialog.open()返回與ID對象,該ID是對話框的ID,我用它來關閉對話框,在這裏工作的代碼,如果有人來找它

vm.openCreateDialog = function() { 

       vm.Dialog = ngDialog.open({ 
        template: 'user/create', 
        className: 'ngdialog-theme-default', 

       }) 
       vm.dialogId = vm.Dialog.id; 
      } 

,並從另一個函數,我只是用id來關閉對話框

ngDialog.close(vm.dialogId) 
0

openCreateDialog您爲Dialog變量賦值,但不能從其他地方訪問它,因爲它在openCreateDialog的範圍內。有關var聲明如何工作的更多信息,請參閱here

要解決該問題,Dialog必須從其他功能的內部可見。有多種方法可以做到這一點,但我只想把它放在vm並從那裏訪問:

vm.Dialog = ngDialog.open({ 
// ... 
vm.Dialog.close(); 

JSFiddle working example

+0

我是否與您的代碼相同,但出現錯誤。無法讀取屬性'close'of undefined – Arash

+0

也許版本與文檔中的內容有所不同?轉載問題的小提琴將有助於理解發生這種情況的確切原因。 –

3

ngDialog.close()將工作。

從文件:

.close(ID,value)方法接受對話框的id作爲字符串參數 關閉特定的對話窗口,如果沒有指定的ID,將關閉所有 當前活動的模態(同行爲爲.closeAll())。採用 可選值解決對話承諾(或所有對話框 承諾)。