【问题标题】:Binding the Dialog to my angular controller将对话框绑定到我的角度控制器
【发布时间】:2015-07-21 23:08:54
【问题描述】:

我正在尝试将 MetroUI 模式对话框绑定到角度控制器属性。这样我就可以使用绑定显示和隐藏对话框。

指令

appMod.directive('showDialog', ['$timeout', function ($timeout): ng.IDirective {
    return {
        restrict: 'A',
        link: function (scope, element, attrs, ngModel) {
            scope.$watch(attrs.showDialog, function (value) {
                if (value) {
                    element.show();
                }
                else {
                    element.hide();
                }
            });
        }
    }
}]);

HTML:

<div class="padding20 dialog" id="dialog9" 
     data-role="dialog" data-close-button="true"
     data-overlay="true" data-overlay-color="op-dark" 
     show-dialog="vm.isDialogVisible">

这样我可以通过在我的控制器上设置 vm.isDialogVisible 布尔值来控制打开对话框。

问题是当用户关闭对话框(通过关闭按钮)时,我正在尝试更新 vm.isDialogVisible 属性。有人知道如何解决这个问题吗?

【问题讨论】:

    标签: metro-ui-css


    【解决方案1】:

    找到自己的解决方案总是很酷(花了我一天的时间:-))。我错误地使用了元素的显示/隐藏功能。我应该使用元素的 data 属性。这样我就可以访问

    onDialogClose

    函数,它使我能够更新范围。下面是我的解决方案

    appMod.directive(showDialog,  ['$timeout','$parse',function ($timeout, $parse){
        return {
            restrict: 'A',
            scope:false,
            link: function (scope, element, attrs) {    
                var e1 = theDialog.data('dialog');
    
                $timeout(() => {
                    e1.options.onDialogClose = (dialog) => {
                        var model = $parse(attrs.showDialog);
                        model.assign(scope, false);
                        scope.$digest();
                    };
                }, 0);
    
                scope.$watch(attrs.showDialog, function (value) {
                    if (value) {
                        e1.open();
                    }
                    else {
                        e1.close();
                    }
                });
            }
        }
    }]);
    

    【讨论】:

      猜你喜欢
      • 2016-09-02
      • 2016-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多