利用kendo ui window创建自己的promise window (二)

前一篇promise window 在做的时候没有考虑仔细,只是实现了自己的关闭按钮,但是kendo window 自己的关闭按钮点击时没有回传值,并且造成了一个非常大的bug,非常抱歉,今天重新整理下。把原来的appdialog文件书写了下,有需要的重新替换下,非常抱歉

var contexts = {};
var dialogCount = 0;
var app = {
    getDialog: function (obj) {
        if (obj) {
            return obj.__dialog__;
        }

        return undefined;
    },
    close: function (obj) {
        var theDialog = this.getDialog(obj);
        if (theDialog) {
            var rest = Array.prototype.slice.call(arguments, 1);
            theDialog.close.apply(theDialog, rest);
        }
    },
    initOption: function (obj) {
        var kendowindOption = {
            actions: ["Pin", "Refresh", "Maximize", "Minimize", "Close"],
            draggable: true,
            pinned: true,
            height: "450px",
            modal: true,
            resizable: true,
            title: "新增",
            width: "700px"
        };
        if (obj) {
            if (obj.actions) {
                kendowindOption.actions = obj.actions;
            }
            if (obj.height) {
                kendowindOption.height = obj.height;
            }
            if (obj.width) {
                kendowindOption.width = obj.width;
            }
            if (obj.title) {
                kendowindOption.title = obj.title;
            }
        }
        return kendowindOption;
    },
    showDialog: function (obj) {
        var dialogid = "dialog" + dialogCount;
        var dialogFilter = "#" + dialogid;
        if ($(dialogFilter) == undefined || $(dialogFilter).length === 0)
            $("body").append('<div id="' + dialogid + '"></div>');
        var instance = $(dialogFilter).data("kendoWindow");
        if (instance == undefined) {
            var kendowindOption = this.initOption(obj);
            $(dialogFilter).kendoWindow(kendowindOption);
        }
        var dfd = $.Deferred();
        instance = $(dialogFilter).data("kendoWindow");
        instance.bind("close", function () {
            var args = instance.closeValue;
            if (args) {
                if (args.length === 0) {
                    dfd.resolve();
                } else if (args.length === 1) {
                    dfd.resolve(args[0]);
                } else {
                    dfd.resolve.apply(dfd, args);
                }
            } else {
                dfd.resolve();
            }
            $(dialogFilter).remove();
            dialogCount = dialogCount - 1;
            delete instance.__dialog__;
        });
        instance.__dialog__ = {
            close: function () {
                var args = arguments;
                var rest = Array.prototype.slice.call(args, 1);
                instance.closeValue = args;
                instance.close.apply(instance, rest);
            }
        };
        dialogCount = dialogCount + 1;
        instance.center();
        var url = obj.url;
        instance.refresh({
            url: url
        });
        instance.open();
        return dfd.promise();
    }
};


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值