Angular Material $ mdDialog.hide() - 在主控制器promise中使用嵌套控制器选择

时间:2016-05-12 08:29:23

标签: javascript angularjs controller mddialog

我有一个$mdDialog窗口,只需单击一下即可弹出,然后根据用户的选择打开另一个窗口,其中包含一个选择列表,以便用户可以选择特定月份。年。我需要从第二个窗口捕获这个月的选择,并在AJAX请求中进一步使用它。问题是我只找到了一些解决方案,说明你需要在$mdDialog.show()内设置承诺,然后在$mdDialog.hide()中解决它。

问题是我在嵌套控制器中有$ mdDialog.hide(),所以我觉得我想把马车放在马的前面。 这是我的控制器的一部分,您可以在其中看到具有.hide()操作的嵌套控制器。当然它会返回' undefined'现在...

angular
    .module('demoApp')
    .controller('AppController', ['$scope', '$mdDialog', function($scope, $mdDialog){
    $scope.showConfirm = function(event) {
    $mdDialog.show({
        targetEvent: event,
        templateUrl: 'templates/mainDialogTemplate.html',
        controller: function($scope, $mdDialog, employee){
           $scope.employee = employee;
           $scope.closeDialog = function(){$mdDialog.hide();}
           $scope.pickDate = function(){$mdDialog.show({
                    templateUrl: 'templates/calendarDialogTemplate.html',
                    parent: angular.element(document.body),
                    //clickOutsideToClose: true,
                    controller: function($scope, $mdDialog) {
                        $scope.cancel = function(){$mdDialog.cancel();}
                        $scope.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
                        $scope.closeDialog = function(){$mdDialog.hide(answer)};
                    }
           }).then(function(answer){
                  console.log(answer);
           })
        }

0 个答案:

没有答案