kendo method:destroy 解决有些在kendo.all.js 的js 库里报错问题
首先,不得不承认,kendo UI 是个不错的东西,特别对于一个前端开发到行不足的程序猿来说。而在我们使用过程中貌似还是会遇到各种奇怪的问题。比如我们会经常用到对一些控件进行重赋值。
destroy
在kendo的configration 的Medhod 的描述是:
Prepares the widget for safe removal from DOM. Detaches all event handlers and removes jQuery.data attributes to avoid memory leaks. Calls destroy method of any child Kendo widgets.
其主要用来对之前的初始化信息进行销毁。防止再次初始化时报错。
当然如果我们仅仅是简单的使用其显示数据的话,一般是不会出现什么问题的。但是当我们如果想运用其更为复杂的一些功能接口时。要求就比较严谨点。
我们要注意的是kendo 的控件一般是不允许对其多次初始化。比如:在项目中,我们可能用到它的grid 或者 scheduler。 而且里面会有一些 功能接口。如:
<!DOCTYPE html>
<html>
<head>
<base href="http://demos.telerik.com/kendo-ui/scheduler/events">
<style>html { font-size: 14px; font-family: Arial, Helvetica, sans-serif; }</style>
<title></title>
<link rel="stylesheet" href="//kendo.cdn.telerik.com/2016.3.1118/styles/kendo.common-material.min.css" />
<link rel="stylesheet" href="//kendo.cdn.telerik.com/2016.3.1118/styles/kendo.material.min.css" />
<link rel="stylesheet" href="//kendo.cdn.telerik.com/2016.3.1118/styles/kendo.material.mobile.min.css" /> <script src="//kendo.cdn.telerik.com/2016.3.1118/js/jquery.min.js"></script>
<script src="//kendo.cdn.telerik.com/2016.3.1118/js/kendo.all.min.js"></script>
<script src="//kendo.cdn.telerik.com/2016.3.1118/js/kendo.timezones.min.js"></script>
<link rel="stylesheet" href="../content/shared/styles/examples-offline.css">
<script src="../content/shared/js/console.js"></script>
</head>
<body>
<div id="example">
<div id="scheduler"></div>
<div class="box wide">
<h4>Console log</h4>
<div class="console"></div>
</div>
</div>
<script>
$(function() {
function scheduler_dataBinding(e) {
kendoConsole.log("dataBinding");
} function scheduler_dataBound(e) {
kendoConsole.log("dataBound");
} function scheduler_save(e) {
kendoConsole.log("save");
} function scheduler_remove(e) {
kendoConsole.log("remove");
} function scheduler_cancel(e) {
kendoConsole.log("cancel");
} function scheduler_change(e) {
var start = e.start; //selection start date
var end = e.end; //selection end date
var slots = e.slots; //list of selected slots
var events = e.events; //list of selected Scheduler events var message = "change:: selection from {0:g} till {1:g}"; if (events.length) {
message += ". The selected event is '" + events[events.length - 1].title + "'";
} kendoConsole.log(kendo.format(message, start, end));
} function scheduler_edit(e) {
kendoConsole.log("edit");
} function scheduler_add(e) {
kendoConsole.log("add");
} function scheduler_moveStart(e) {
kendoConsole.log("moveStart");
} function scheduler_move(e) {
kendoConsole.log("move");
} function scheduler_moveEnd(e) {
kendoConsole.log("moveEnd");
} function scheduler_resizeStart(e) {
kendoConsole.log("resizeStart");
} function scheduler_resize(e) {
kendoConsole.log("resize");
} function scheduler_resizeEnd(e) {
kendoConsole.log("resizeEnd");
} function scheduler_navigate(e) {
kendoConsole.log(kendo.format("navigate:: action:{0}; view:{1}; date:{2:d};", e.action, e.view, e.date));
} $("#scheduler").kendoScheduler({
date: new Date("2013/6/13"),
startTime: new Date("2013/6/13 7:00"),
height: 400,
timezone: "Etc/UTC",
views: [
"day",
{ type: "week", selected: true },
"month",
"agenda",
"timeline"
],
selectable: true,
dataBinding: scheduler_dataBinding,
dataBound: scheduler_dataBound,
save: scheduler_save,
remove: scheduler_remove,
edit: scheduler_edit,
add: scheduler_add,
cancel: scheduler_cancel,
change: scheduler_change,
moveStart: scheduler_moveStart,
move: scheduler_move,
moveEnd: scheduler_moveEnd,
resizeStart: scheduler_resizeStart,
resize: scheduler_resize,
resizeEnd: scheduler_resizeEnd,
navigate: scheduler_navigate,
dataSource: {
batch: true,
transport: {
read: {
url: "//demos.telerik.com/kendo-ui/service/tasks",
dataType: "jsonp"
},
update: {
url: "//demos.telerik.com/kendo-ui/service/tasks/update",
dataType: "jsonp"
},
create: {
url: "//demos.telerik.com/kendo-ui/service/tasks/create",
dataType: "jsonp"
},
destroy: {
url: "//demos.telerik.com/kendo-ui/service/tasks/destroy",
dataType: "jsonp"
},
parameterMap: function(options, operation) {
if (operation !== "read" && options.models) {
return {models: kendo.stringify(options.models)};
}
}
},
schema: {
model: {
id: "taskID",
fields: {
taskID: { from: "TaskID", type: "number" },
title: { from: "Title", defaultValue: "No title", validation: { required: true } },
start: { type: "date", from: "Start" },
end: { type: "date", from: "End" },
startTimezone: { from: "StartTimezone" },
endTimezone: { from: "EndTimezone" },
description: { from: "Description" },
recurrenceId: { from: "RecurrenceID" },
recurrenceRule: { from: "RecurrenceRule" },
recurrenceException: { from: "RecurrenceException" },
ownerId: { from: "OwnerID", defaultValue: 1 },
isAllDay: { type: "boolean", from: "IsAllDay" }
}
}
}
}
});
});
</script> </body>
</html>
如:上面code中的 scheduler_change()方法,我们在运用在会经常用它来实现切换日期时对scheduler的值进行重新初始化。但是如果我们直接对$("#scheduler").kendoScheduler({}) 进行调用时,可能会出现有些功能接口在kendo.all.js 里报错。
但如果我们在重新初始化前能调用一下destroy 方法。则可以避免这些问题。
var scheduler = $("#scheduler").data("kendoScheduler");
scheduler.destroy();
对之前的初始化进行销毁。
$("#scheduler").kendoScheduler({
kendo method:destroy 解决有些在kendo.all.js 的js 库里报错问题的更多相关文章
- 解决Android Studio Conflict with dependency 'com.android.support:support-annotations'报错
解决Android Studio Conflict with dependency 'com.android.support:support-annotations'报错 在Android Studi ...
- 【技术贴】解决支付宝充值信用卡还款跳转到网上银行报错Error 404 - Not Found
声明 : 本文在 GFDL 1.2 下发布,本文出处光大银行信用卡 http://bbs.090989.com/forum-186-1.html http://androidgao.blogspot ...
- JS 调试中常见的报错的解决办法
报错:Uncaught SyntaxError: Unexpected token o in JSON at position 1 at JSON.parse (<anonymous>) ...
- 解决FAT32格式U盘安装Windows 10时的报错(错误代码:0x8007000D)
一.现象描述 使用UltraISO软碟通将 Windows 10 version 1909 刻录到U盘内来安装系统. 从U盘启动安装过程中,报错如下: "Windows 无法打开所需的文件 ...
- 解决Vue项目打包之后放到nginx下刷新就报错404的问题
最近跟着某机构的教学视频敲了一遍vue项目,但是在windows环境下部署的时候就懵逼了放到nginx下正常跑没问题,但是刷新之后就报404错误 前端项目构建vue 脚手架版本 是@vue/cli 4 ...
- Windows串口之解决包含setupapi.h还提示找不到符号报错
关于 本文演示环境: win10 1909 + VS2017 1. 错误信息 明明已经添加了头文件setupapi.h 和 库 setupapi.lib, 却还是提示报错,报错信息: 1>C:\ ...
- [异常解决] Keil安装好nRF51822开发环境,运行DEMO报错:Error:“GPIOTE_CONFIG_NUM_OF_LOW_POWER_ENVENTS” is undefined
1.问题描述 when compiling "ble_app_proximity" exampled by Nordic, it indicates errors: "D ...
- [Android]通过js方法回调部分native报错 Web Console: Uncaught TypeError: Object [object Object] has no method 'xxx'
在android4.2以前,注入步骤如下: webview.getSetting().setJavaScriptEnable(true); class JsObject { public String ...
- 解决方法:loadrunner 场景下执行webservice脚本是---报错10492 Error: Exception was raised when calling per-process-init function in extens
在vug下执行时,脚本无异常,但是在controller下执行时报下面错误,网上查了下,解决方法千奇百怪,但无一可行. 分析了下错误,似乎是初始化进程有关.想到rts中的设置习惯时以线程方式执行. 遂 ...
随机推荐
- 更新user的方法
from django.contrib.auth.admin import UserAdmin from django.contrib.auth.forms import UserChangeForm ...
- PHP开发工具(CodeLobster PHP Edition)
参考:http://www.uzzf.com/soft/45948.html 产品名:ttrar.com 密 钥:dstp-187c-9cdd-9a60-e185-b280 CodeLobste ...
- codeforces 1023 D. Array Restoration 并查集
D. Array Restoration time limit per test 1 second memory limit per test 256 megabytes input standard ...
- 通过父类定位到子类 先将父类当作一个dom
通过父类定位到子类 先将父类当作一个dom 在此基础上在定位子类
- Infinity NaN undefined和null
Infinity属性用于存放表示正无穷大的数值. 负无穷大是表示负无穷大一个数字值. 该属性为Global对象的一个只读属性, 所有主流浏览器均支持该属性. Infinity属性的值为Number类型 ...
- 洛谷P3938 斐波那契
题目戳 题目描述 小 C 养了一些很可爱的兔子. 有一天,小 C 突然发现兔子们都是严格按照伟大的数学家斐波那契提出的模型来进行 繁衍:一对兔子从出生后第二个月起,每个月刚开始的时候都会产下一对小兔子 ...
- 【刷题】洛谷 P3806【模板】点分治1
题目背景 感谢hzwer的点分治互测. 题目描述 给定一棵有n个点的树 询问树上距离为k的点对是否存在. 输入输出格式 输入格式: n,m 接下来n-1条边a,b,c描述a到b有一条长度为c的路径 接 ...
- Ckeditor与Ckfinder(java)整合实现富媒体内容编辑(支持文件上传)
先来看一下最终的效果图 一.编辑器界面 二.上传图片界面 <!-------------------------------------------------------> 一.安装包下 ...
- 【BZOJ5248】【九省联考2018】一双木棋(搜索,哈希)
[BZOJ5248][九省联考2018]一双木棋(搜索,哈希) 题面 BZOJ Description 菲菲和牛牛在一块n行m列的棋盘上下棋,菲菲执黑棋先手,牛牛执白棋后手.棋局开始时,棋盘上没有任何 ...
- [ZJOI2011]细胞——斐波那契数列+矩阵加速+dp
Description bzoj2323 Solution 题目看起来非常复杂. 本质不同的细胞这个条件显然太啰嗦, 是否有些可以挖掘的性质? 1.发现,只要第一次分裂不同,那么互相之间一定是不同的( ...