如何使用$ materialDialog

时间:2014-09-03 11:05:48

标签: angularjs material-design

$materialDialogAngular Material Design个组件。
但是如何使用该组件?为什么它不返回像angular-ui bootstrap这样的东西?如何审判承诺或结果或其他任何东西,只关闭模态? 这是一个简短的例子:

var test = $materialDialog({
        templateUrl: '/Assets/app/azured/partials/dialog.html',
        targetEvent: event,
        resolve:{
            item: function () {
                return item;
            }
        },
        appendTo: angular.element.find('dialog'),
        controller: ['$scope', '$hideDialog', 'item', function ($scope, $hideDialog, item) {
            $scope.name = item.Name;
            $scope.cancel = function () {
                $hideDialog();
            }
            $scope.ok = function () {
                scope.name = '';
                $hideDialog();
            };
        }]
    });
    test.then(function (x) {
        console.log(x); //this prints destroyDialog function why?
    });

我们在哪里知道用户按下了什么?我应该在$ materialDialog中实现自定义逻辑吗?在那种情况下,我发现它很奇怪。 问题发生在github 237

2 个答案:

答案 0 :(得分:4)

这是一篇博文,展示了一种更清洁的方法,包括一个Plunker。

http://angularauthority.com/2015/04/28/creating-a-material-design-modal-service/

答案 1 :(得分:2)

像这样解决

function DeleteItem(_list, _item) {
    azuredBlade.Load('listId');
    Api.Delete(_list, _item).then(function (x) {
        if (x) {
            azuredBlade.Deload('listId');
            Refresher();
        }
    });
}
function Dialog(event, item, tableName) {
    $materialDialog({
        templateUrl: '/Assets/app/azured/partials/dialog.html',
        targetEvent: event,
        resolve: {
            item: function () {
                return item;
            },
            tableName: function () {
                return tableName;
            },
            fn: function () {
                return DeleteItem;
            }
        },
        appendTo: angular.element.find('dialog'),
        controller: function ($scope, item, tableName, $hideDialog, fn) {
            $scope.name = item.Name;
            $scope.cancel = function () {
                $hideDialog();
            }
            $scope.ok = function () {
                fn(tableName, item);
                $hideDialog();
            };
        }
    });
}

因此逻辑超出$ materialDialog并在fn resolve

内传递