利用kendo ui window创建自己的promise window

新建一个appdialog.js文件,代码如下

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.__dialog__ = {
            close: function () {
                dialogCount = dialogCount - 1;
                delete instance.__dialog__;
                instance.close();
                $(dialogFilter).remove();
                var args = arguments;
                if (args.length === 0) {
                    dfd.resolve();
                } else if (args.length === 1) {
                    dfd.resolve(args[0]);
                } else {
                    dfd.resolve.apply(dfd, args);
                }
            }
        };
        dialogCount = dialogCount + 1;
        instance.center();
        var url = obj.url;
        instance.refresh({
            url: url
        });
        instance.open();
        return dfd.promise();
    }
};

新建一个index.html 页面

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <style>
        html {
            font-size: 12px;
            font-family: Arial, Helvetica, sans-serif;
        }
    </style>
    <title></title>
    <link href="http://cdn.kendostatic.com/2014.2.716/styles/kendo.common.min.css" rel="stylesheet" />
    <link href="http://cdn.kendostatic.com/2014.2.716/styles/kendo.default.min.css" rel="stylesheet" />
    <link href="http://cdn.kendostatic.com/2014.2.716/styles/kendo.dataviz.min.css" rel="stylesheet" />
    <link href="http://cdn.kendostatic.com/2014.2.716/styles/kendo.dataviz.default.min.css" rel="stylesheet" />
    <script src="http://cdn.kendostatic.com/2014.2.716/js/jquery.min.js"></script>
    <script src="http://cdn.kendostatic.com/2014.2.716/js/angular.min.js"></script>
    <script src="http://cdn.kendostatic.com/2014.2.716/js/kendo.all.min.js"></script>
    <script src="appdialog.js"></script>
</head>
<body>
    <button id="open">打开窗口</button>
    <script>
        $(function () {
            initOpenBtn();
        });
        function initOpenBtn() {
            $("#open").click(function () {
                var obj = { url: "page2.html" };
                app.showDialog(obj).then(function (result) {
                    if (result) {
                        alert(result);
                        console.log(result);
                    }
                });
            });

        }
    </script>
</body>
</html>

新建page2.html 页面

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
</head>
<body>
    <button id="save">关闭</button>
    <script>
        $("#save").click(function () {
            var result = "sfasfasdf";
            app.close($("#save").closest(".k-window-content").data("kendoWindow"), result);
        });
    </script>
</body>
</html>

点击打开按钮效果如下:

点击关闭按钮

这个功能只是做了大概的,需要继续完善。kendo ui 中promise操作没有设计好。感觉用起来不是很爽

利用kendo ui window创建自己的promise window

时间: 2024-07-30 14:42:23

利用kendo ui window创建自己的promise window的相关文章

利用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__;

kendo ui grid 创建一行数据多次添加(kendo ui grid datasource multiple create)

今天测试之前使用kendo ui grid 做的数据表格的时候发现了一个bug,我使用的是kendo ui grid 系统自带的自动添加数据和编辑数据的功能,每次添加完一条数据的时候继续添加的时候会发现之前添加的数据会重复添加.查看官方文档,文档说是dataSource schema model id 必须是唯一键,而且添加数据完成之后需要返回一个数据包含id,结果研究了半天没有找到问题所在. var crudServiceBaseUrl = "/NFC"; var dataSourc

vue利用vue ui命令创建项目

上次用git bash,用create 命令创建vue项目,这是玩个炫酷的------vue ui (前提是有安装node.js). 在目标文件  vue ui 可以看到他在8000端口出现了一个gui图形窗口 剩下的基本很友好.点击创建项目,会让填项目名称,选择包管理工具,是否上传git, 然后让选择预设.预设就是你的下载loader包的配置. 你如果想要彻底删除以前自己保存的预设,可以找c盘下的用户,搜索 .vuerc,把你不想要的预设删除就可以了. 最后一步点击创建项目,vue-cli 会

Kendo UI常用示例汇总(三)

<Kendo UI Professional试用版下载> Kendo UI Professional 提供开源和商业两个版本.开源版 Kendo UI Core,有40+个框架和组件:商业版整合了之前的Kendo UI Web.Kendo UI Mobile 和 Kendo UI DataViz ,一共有70+个框架和组件.作为Kendo UI的升级版,Kendo UI Professional既可以开发网页版应用程序,也可以开发移动版应用程序,并且在性能上也有显著的优化和提升. Kendo

Kendo UI常用示例汇总(四)

<Kendo UI Professional试用版下载> Kendo UI Professional 提供开源和商业两个版本.开源版 Kendo UI Core,有40+个框架和组件:商业版整合了之前的Kendo UI Web.Kendo UI Mobile 和 Kendo UI DataViz ,一共有70+个框架和组件.作为Kendo UI的升级版,Kendo UI Professional既可以开发网页版应用程序,也可以开发移动版应用程序,并且在性能上也有显著的优化和提升. Kendo

构建的Web应用界面不够好看?快试试最新的Kendo UI R3 2019

通过70多个可自定义的UI组件,Kendo UI可以创建数据丰富的桌面.平板和移动Web应用程序.通过响应式的布局.强大的数据绑定.跨浏览器兼容性和即时使用的主题,Kendo UI将开发时间加快了50%. Kendo UI目前最新提供Kendo UI for jQuery.Kendo UI for Angular.Kendo UI Support for React和Kendo UI Support for Vue四个控件.Kendo UI for jQuery是创建现代Web应用程序的最完整U

利用 jQuery UI 和 Ajax 创建可定制的 Web 界面

如今,网站比以往更具可定制性,允许用户更改其空间,根据自己的喜好对其进行个性化.个性化的主页或仪表板页面(例如 iGoogle.MyYahoo! 和 MyAOL)日渐普及,大多数 Web 应用程序内甚至也整合了类似的功能.jQuery 库简化了此类复杂 JavaScript 交互的编写,随着 jQuery UI 的引入,这项功能得到了进一步的简化,该库以易于访问的 jQuery 插件的形式提供了常用用户界面类型. 本文介绍了如何利用 Ajax 和 jQuery UI 创建具有各种定制功能的高度可

Kendo UI Professional Q3 2015 Beta发布[附下载]

日前,Kendo UI Professional正式发布Q3 2015 Beta发版本,新版本集成了Web组件.新增布局图元素.为甘特图新增响应式操作等,同时还修复了一系列小bug. 立即下载最新版本:Kendo UI Professional Kendo UI集合了创建现代Web和移动应用所需的所有功能.整个包包含70+基于jQuery的响应式UI组件,一个MVVM框架,自定义主题.模板等等.不仅如此,Kendo UI Professional整合了之前的Kendo UI Web.Kendo

Kendo UI for jQuery使用教程:支持Web浏览器

[Kendo UI for jQuery最新试用版下载] Kendo UI目前最新提供Kendo UI for jQuery.Kendo UI for Angular.Kendo UI Support for React和Kendo UI Support for Vue四个控件.Kendo UI for jQuery是创建现代Web应用程序的最完整UI库. Kendo UI小部件和框架组件旨在支持所有主要的Web浏览器,并提供跨浏览器兼容性.标准兼容性或支持触摸设备. 但是根据项目的具体情况,您