首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角倍数$mdDialog

角倍数$mdDialog
EN

Stack Overflow用户
提问于 2017-03-15 17:05:40
回答 3查看 8.4K关注 0票数 2

我使用模态选项卡,我有通知弹出窗口,当用户登录到我的应用程序时,它总是显示给用户。它包含当用户脱机时发生的所有事件。问题是当我单击列表中的任何对象时,关闭弹出窗口并显示新的模式选项卡。

我想归档这个功能。当用户登录时,通知弹出窗口将显示给用户,如果他单击任何对象,它将打开另一个窗口而不关闭我的通知弹出窗口(New)。我想在我所做的图片上画一些类似的东西。

我检查了角材料文档,但是根本没有演示,甚至没有很好地解释如何使用multiple: true选项,我也不知道如何使它像我想要的那样工作。

https://material.angularjs.org/latest/api/service/$mdDialog

这是我显示通知弹出窗口的代码.

代码语言:javascript
复制
//show new notifications when user log in
    NotificationService.getUnreadedNotifications(function (data) {
        //initialization
        $scope.notification = [];
        $scope.OverAllCount = 0;
        $scope.messageNotification = [];
        $scope.OverAllMessageCount = 0;

        if (data.ProjectNotifications != null) {
            angular.forEach(data.ProjectNotifications, function (key, value) {
                $scope.notification.push(key);
                $scope.OverAllCount = $scope.OverAllCount + 1;
            });
        }

        if (data.TasksNotifications != null) {
            angular.forEach(data.TasksNotifications, function (key, value) {
                $scope.notification.push(key);
                $scope.OverAllCount = $scope.OverAllCount + 1;
            });
        }

        if (data.MessageNotifications != null) {
            angular.forEach(data.MessageNotifications, function (key, value) {
                $scope.OverAllMessageCount = $scope.OverAllMessageCount + 1;
                $scope.messageNotification.push(key);
            });
        }

        popUpNotification();

        $scope.hide = function () {
            $mdDialog.hide();
        };

        $scope.cancel = function () {
            $mdDialog.cancel();
        };

        $scope.answer = function (answer) {
            $mdDialog.hide(answer);
        };

        //mark notifications as readed when user click on notification
        function popUpNotification() {
            $mdDialog.show({
                controller: NotificationController,
                templateUrl: 'app/components/templates/PopUpNotification.html',
                parent: angular.element(document.body),
                //targetEvent: ev,
                clickOutsideToClose: true,
                fullscreen: false,
                scope: $scope,
                multiple:true,
                preserveScope: true,
                onComplete: function () {
                    $scope.notificationPopUp = $scope.notification;
                }
            })
            .then(function () {

            }, function () {
                //fail
            });
        }
    });

这是用于显示用户在新的覆盖模式选项卡中单击的对象的详细信息的代码。

代码语言:javascript
复制
        //mark notifications as readed when user click on notification
    $scope.popUpDetail = function (notification, index, ev) {
        $mdDialog.show({
            controller: NotificationController,
            templateUrl: 'app/components/templates/TaskDetailsDialog.html',
            parent: angular.element(document.body),
            targetEvent: ev,
            clickOutsideToClose: true,
            fullscreen: false,
            scope: $scope,
            multiple: true,
            preserveScope: true,
            onComplete: function () {
                //was readed => update database
                NotificationResourceService.update({ id: notification.Id }, notification);
                $scope.OverAllCount -= 1;
                $scope.notification.splice(index, 1);

                TaskService.get({ id: notification.EntityId })
                    .$promise.then(function (task) {
                        $scope.task = task;
                    });
            }
        })
        .then(function () {

        }, function () {
            //fail
        });
    }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-15 20:48:06

不知何故,我找到了解决问题的办法。可能会对未来的人有所帮助。

工作代码:

代码语言:javascript
复制
 function popUpNotification() {
            $mdDialog.show({
                templateUrl: 'app/components/templates/PopUpNotification.html',
                clickOutsideToClose: true,
                bindToController: true,
                scope: $scope,  
                preserveScope: true,
                controller: function ($scope, $mdDialog) {
                    $scope.notificationPopUp = $scope.notification;
                    $scope.popUpDetail = function (notification, index, ev) {
                        $mdDialog.show({
                            controller: function ($mdDialog) {
                                this.click = function () {
                                    $mdDialog.hide();
                                }
                            },
                            targetEvent: ev,
                            clickOutsideToClose: true,
                            preserveScope: true,
                            autoWrap: true,
                            skipHide: true,
                            scope: $scope,
                            preserveScope: true,
                            templateUrl: 'app/components/templates/TaskDetailsDialog.html',
                            onComplete: function () {
                                TaskService.get({ id: notification.EntityId })
                                    .$promise.then(function (task) {
                                        $scope.task = task;
                                    });
                            }
                        })
                    }
                },
                autoWrap: false,
            })
        }
        });
票数 2
EN

Stack Overflow用户

发布于 2019-10-14 08:08:56

添加'multiple: true'作为参数:

代码语言:javascript
复制
// From plain options
$mdDialog.show({
  multiple: true
});

// From a dialog preset
$mdDialog.show(
  $mdDialog
    .alert()
    .multiple(true)
);

来自文档:https://material.angularjs.org/latest/api/service/$mdDialog

票数 1
EN

Stack Overflow用户

发布于 2020-08-20 12:00:50

关键是在传递给skipHide: true的对象中使用$mdDialog.show()作为参数。我尝试了没有multiple: true,但它仍然有效。必须将此参数传递给到第二个(或nth)对话框。所以它看起来会像这样想:

代码语言:javascript
复制
// second dialog 
$mdDialog.show({
  // some fields
  skipHide: true,
  //some fields
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42816310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档