2016-04-26 63 views
0

我有媒體列表,當我點擊一個項目時,我想打開ngDialog並將模型傳遞給ngDialog,我已閱讀文檔和博客,但所有人都使用$ scope來傳遞模型或數據, (vm)不是控制器。如何使用虛擬機將數據傳遞到ngDialog控制器和我如何可以調用VM父虛擬機($父。$範圍)從ngDiloag控制器(控制器)的情況下ngDialog作爲場景中的控制器範圍

這裏是我的代碼(簡體版)

(function() { 
    'use strict'; 
    angular 
     .module('app.media') 
     .controller('mediaController', Controller); 

    Controller.$inject = ['$filter', 'ngTableParams', '$rootScope', '$http', '$log', '$uibModal', 'ngDialog', 'toaster', 'mediaDataService']; 

    function Controller($filter, ngTableParams, $rootScope, $http, $log, $uibModal, ngDialog, toaster, mediaDataService) { 
     var vm = this; 

     vm.media = {}; 


     activate(); 



     function activate() { 

      vm.updateMedia = function() { 
       mediaDataService.updateMedia(vm.media).then(function (res) { 
        toaster.pop('success', 'ویرایش فایل با موفقیت انجام شد', 'ویرایش فایل') 
       }) 
      } 


      vm.openUpdateDialog = function (media) { 
       //i want to use vm.media in opening dialog 
       vm.media = media; 
       ngDialog.open({ 
        template: 'media/edit' 
        , className: 'ngdialog-theme-default' 
        , controller: 'updateMediaController', 

        //i had used data to pass data to new controller and used ngDialogData in my opening template to access media , 
        //the probelm with this case is i cant access parrent controller(the controller that is openin dialog) from DngDialog 
        //opened Controller(because i want to run parrent controller updateMedia function when user click update in opened dialog) 
        //**commented out - not usefull **//  
        //data:media 
       }) 
      } 

     } 
    } 
})(); 

有什麼建議嗎? 謝謝

回答

1

試試這個:

如果您使用單獨的$範圍服務的控制器此對象將被傳遞到$範圍$父PARAM: see this for more information

ngDialog.open({ 
       template: 'media/edit', 
       className: 'ngdialog-theme-default', 
       controller: 'updateMediaController', 
       scope:$scope 
      }) 
+0

我不在我的parrent控制器中使用$ scope。 – Arash

+0

做你的測試嗎? –

+0

試試這個controllerAs:'vm或其他' –