2016-03-10 81 views
2

我有一個控制器,其中我使用的是模態。請檢查這個將角度模態數據傳遞給主控制器

'use strict' 
var DataMod = angular.module('Data', ["angularGrid", 'ui.bootstrap.contextMenu', 'ui.bootstrap']); 
DataMod.controller('DataController', ['$scope', '$compile', '$uibModal', '$log','$rootScope', '$http', function ($scope, $compile, $uibModal,$log, $rootScope, $http, ngUtilityService) { 


$scope.adduser = function() { 


    var modalInstance = $uibModal.open({ 
     templateUrl: 'myModalContent.html', 
     controller: ModalInstanceCtrl 
    }); 

}; 

//use data value here. 



var ModalInstanceCtrl = function ($scope, $uibModalInstance) { 

    var data = "analog"; 

    $scope.cancel = function() { 
     $uibModalInstance.dismiss('cancel'); 
    }; 
}; 


} 

]); 

正如你所看到的,用戶點擊'添加用戶'選項卡。添加用戶功能得到執行並彈出一個模式。我已經完成了幾個內部處理。

最後,我想將一個變量'data'傳回主控制器。有人可以讓我舉一個簡單的例子來說明如何將數據從模態傳輸到控制器。

我已經看到了幾個例子,並明白決心將幫助我實現它。但我總是感到困惑......

+0

工作的?因爲在定義它之前您正在使用ModalInstanceCtrl。一個可能的解決方案,如果你在DataController的範圍內定義了ModalInstanceCtrl,你應該能夠使用閉包共享一個變量。你試過了嗎? –

回答

2

如果你在DataController的範圍內定義了ModalInstanceCtrl,你應該可以使用閉包來共享一個變量。

例:

var data = { 
    name:"Foo" 
} 
$scope.data = data; 
var ModalInstanceCtrl = function ($scope, $uibModalInstance) { 
    //accessing data from the controller using closure. 
    data.name = "analog"; 

    $scope.cancel = function() { 
     $uibModalInstance.dismiss('cancel'); 
    }; 
}; 

$scope.adduser = function() { 


    var modalInstance = $uibModal.open({ 
     templateUrl: 'myModalContent.html', 
     controller: ModalInstanceCtrl 
    }); 

}; 
$scope.processData = function(){ 
     //do something with data 
}; 
$scope.$watch('data', function (old, new){ 
    //if data changed do somthing 
}); 

//if you use data here it will have no value yet. 
//use data value here. 

你也可以使用一個服務,讓兩個控制器訪問它。模式將改變這個服務中的一個變量的狀態,並且DataController將從服務中獲取它。

服務的一個例子是:

DataMod.Service('Data', function() { 

    var data = { 
     FirstName: '' 
    }; 

    return { 
     getFirstName: function() { 
      return data.FirstName; 
     }, 
     setFirstName: function (firstName) { 
      data.FirstName = firstName; 
     } 
    }; 
}); 
+0

hi @ vinicius-如果我想將模型中的對象數組傳遞給控制器​​,這將工作嗎? –

+0

@anjali gupte,它應該 –

+0

@anjaligupte,如果它幫助你可以標記爲答案? –

相關問題