好久没有碰easyUI,打算重新搭一套前后台通用的标准框架,于是重新接触KendoUI,另外有几款轻量的前台展示UI也很不错:chico框架,w2ui,Wijmo(非常棒),抉择了一下,决定用KendoUI。
简单介绍一下KendoUI
-
web版本free
-
非常专业的Html5 MVVM标准框架,接口统一,绑定丰富
-
渲染速度很快
-
报表是亮点
-
……
好了,废话少说, 框架虽然不错,但是基本的Widget有缺失,比如form,layout,messagebox,进度条等等。
本章手动写一个messagebox
思路:虽然没有messagebox,但我们可以用它本身的window这个插件封装,做为一个messageBox原型
建一个方法定义,返回一个div层
kendo.ui.ExtAlertDialog = {
show: function (options) {
return new $.Deferred(function (deferred) {
var dialog = null;
if ($("#extAlertDialog").length > 0) {
$("#extAlertDialog").parent().remove();
}
options = $.extend({
width: "300px",
height: "100px",
buttons: [{
name: "OK",
click: function (e) {
dialog.close();
deferred.resolve({ button: "OK" });
}
}],
modal: true,
visible: false,
message: "",
icon: "k-ext-information"
}, options);
$(document.body).append(kendo.format("<div id='extAlertDialog' style='position:relative;'><div style='position:absolute;left:10px;top:10px;' class='{0}'></div><div style='display:inline-block;margin-left:45px;'>{1}</div></div>", options.icon, options.message));
dialog = $("#extAlertDialog").kendoExtDialog(options).data("kendoExtDialog");
$("#extAlertDialog").parent().find("div.k-window-titlebar div.k-window-actions").empty();
dialog.center().open();
});
},
hide: function () {
$("#extAlertDialog").data("kendoExtDialog").close();
}
};
调用:
$.when(kendo.ui.ExtAlertDialog.show({
title: "Alert!",
message: "This is a sample alert box",
icon: "k-ext-information" })
).done(function () {
alert("click [OK] button");
});
tips:ExtDialog是定义的一个变量,需声明
var ExtDialog = kendo.ui.Window.extend({
_buttonTemplate: kendo.template('<div class="k-ext-dialog-buttons" style="position:absolute; bottom:10px; text-align:center; width:#= parseInt(width) - 14 #px;"><div style="display:inline-block"># $.each (buttons, function (idx, button) { # <button class="k-button" style="margin-right:5px; width:100px;">#= button.name #</button> # }) # </div></div>'),
_contentTemplate: kendo.template('<div class="k-ext-dialog-content" style="height:#= parseInt(height) - 55 #px;; width:#= parseInt(width) - 14 #px;overflow:auto;">'),
init: function (element, options) {
/// <signature>
/// <summary>
/// Initialize the dialog.
/// </summary>
/// </signature>
var that = this;
options.visible = options.visible || false;
kendo.ui.Window.fn.init.call(that, element, options);
$(element).data("kendoWindow", that);
var html = $(element).html();
$(element).html(that._contentTemplate(options));
$(element).find("div.k-ext-dialog-content").append(html);
$(element).after(that._buttonTemplate(options));
$.each(options.buttons, function (idx, button) {
if (button.click) {
$($(element).parent().find(".k-ext-dialog-buttons .k-button")[idx]).on("click", { handler: button.click }, function (e) {
e.data.handler({ button: this, dialog: that });
});
}
});
that.bind("resize", function (e) {
that.resizeDialog();
});
},
resizeDialog: function () {
var that = this;
var $dialog = $(that.element);
var width = $dialog.width();
var height = $dialog.height();
$dialog.parent().find(".k-ext-dialog-buttons").width(width);
$dialog.parent().find(".k-ext-dialog-content").width(width).height(height - 39);
},
options: {
name: "ExtDialog"
}
});
kendo.ui.plugin(ExtDialog);
Comments | NOTHING