错误:剑道“某事”不是函数
Posted
技术标签:
【中文标题】错误:剑道“某事”不是函数【英文标题】:ERROR: Kendo"Something" is not a function 【发布时间】:2014-01-21 15:35:00 【问题描述】:所以我试图将我的纯 html/javascript 网站(工作正常)转换为 ASP MVC4 项目。我所做的是获取 XML 并使用 XSLT 进行转换。我确实使用代码from here 来做到这一点
在我的_Layout.cshtml
中,我使用 razor 加载资源
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
... things...
@Scripts.Render("~/bundles/kendoScripts")
@Scripts.Render("~/bundles/customScript")
@Styles.Render("~/Content/themes/Kendo")
@Styles.Render("~/Content/themes/customCSS")
我使用布局的视图非常简单,这就是页面中的全部内容
@using Summ.ExtensionCode
@model SumMVC.Models.SummaryModel
@
ViewBag.Title = "_Summary";
Layout = "~/Views/Shared/_Layout.cshtml";
<div data-role="content">
@Html.RenderXml(Model.ProgramFilename, Model.StylesheetFilename, Model.Parameters)
</div>
在@Scripts.Render("~/bundles/customScript")
中,是一个 JS 文件,renderpage.js,其中包含这段代码 $(this).kendoDropDownList();
,其中这是一个选择元素。但我收到一个错误,.kendoDropDownList();
不是函数。来自萤火虫的错误:TypeError: $(...).kendoDropDownList is not a function
和来自 GoogleChrome 的错误Uncaught TypeError: Object [object Object] has no method 'kendoDropDownList'
。似乎在我的包中 JS 文件 kendo.all.min.js 没有开始加载这里是什么样子
bundles.Add(new ScriptBundle("~/bundles/kendoScripts")
.Include("~/Scripts/kendoui/kendo.web.min.js")
.Include("~/Scripts/kendoui/kendo.all.min.js")
);
....
bundles.Add(new ScriptBundle("~/bundles/customScript")
.....
.Include("~/Scripts/SummaryScript/renderpage.js")
....
);
我假设代码可能在 kendo.all.min.js 完成加载之前执行,但正如您在上面看到的 renderpage.js 是在 kendo 之后。有什么想法或见解吗?
更新
我在head标签中手动加载MVC项目中的资源时忘记添加了
<script type="text/javascript" src="~/Scripts/kendoui/kendo.web.min.js"></script>
<script type="text/javascript" src="~/Scripts/kendoui/kendo.all.min.js"></script>
....
<script type="text/javascript" src="~/Scripts/ExecSummaryScript/renderpage.js"></script>
效果很好。
更新2
原来 Kendo JS 文件根本没有被加载。我在开发控制台中检查了资源,并注意到它甚至不存在。仔细检查后,我注意到除了一些 .min.js
文件之外的所有资源都已加载。 jquery-ui-1.10.3.min.js 和 jquery.browser.min.js 有一些加载但没有加载。
【问题讨论】:
这意味着不包含 jquery 插件“kendoDropDownList”,或者包含在与$
当前表示的不同版本的 jquery 中
@KevinB 我也是这么想的。所以我所做的就是用 1.9 替换 jquery 1.8 没有运气,并且还尝试从 github.com/jquery/jquery-migrate 那里没有任何东西的 jqueryMigrate。我应该注意,我包含了 HTML/Javascript 项目中的所有内容,并且一切正常,只是不在 MVC 项目中
jquery的版本无关紧要,重要的是jquery相对于kendoui在页面中的位置
@KevinB 是的,Kendoui 似乎带有 jquery 的软件包。正如这篇帖子的答案***.com/questions/14382884/… 所说,我也确实在我得到的 kendoui 文件夹中看到了一个 jquery.min.js。
@KevinB 经过仔细检查,我注意到所有资源都已加载,除了一些 .min.js
文件。 jquery-ui-1.10.3.min.js 和 jquery.browser.min.js 有一些加载但没有加载。
【参考方案1】:
我知道这会很愚蠢。原来这是一个 MVC4 gothcha。我不得不重命名我的文件。显然它不喜欢扩展名为min.js
I found the answer here的文件
【讨论】:
以上是关于错误:剑道“某事”不是函数的主要内容,如果未能解决你的问题,请参考以下文章