我对Kendo UI真的很陌生,而且我遇到了一些问题。使用BundleConfiguration
解决引用问题后,显示错误:
kendo.syncReady不是函数
以下是我的观点:
<head>
@Styles.Render("~/Content/kendo.common.min.css")
@Styles.Render("~/Content/kendo.default.min.css")
@Scripts.Render("~/Scripts/jquery.min.js")
@Scripts.Render("~/Scripts/kendo.web.min.js")
@Scripts.Render("~/Scripts/kendo.aspnetmvc.min.js")
@Scripts.Render("~/Scripts/kendo.all.min.js")
@Scripts.Render("~/Scripts/modernizr-2.6.2.js")
</head>
<body>
@(Html.Kendo().DatePicker().Name("datepicker"))
</body>
这种情况发生在Chrome上。在IE上,它告诉我datepicker是未定义的。 也许我错过了一个参考或什么?或者有人可以告诉我如何检查我的jQuery脚本的版本?我从Telerik Free Trial获得了所有这些。
答案 0 :(得分:11)
最新版本的KendoUI中添加了kendo.syncReady
功能(大约v2017.1 223)。 Telerik开发人员在forum post中写道:
在kendo.aspnetmvc.js文件中添加了
syncReady
方法,因为包含它的原因是jQuery 3.1的主要问题以及如何在MVC中生成模板。考虑到这一点,确保使用最新版本更新kendo.aspnetmvc.js文件应该使用缺少的函数解决错误。
导致此错误的主要条件有两个:
<body>
关闭一样)。 ASP.NET MVC包装器为您生成Kendo JS代码,现在它们将该代码包装在kendo.syncReady
函数中,但是如果在MVC上将Kendo JS插入页面后包含Kendo的脚本标记包装器,kendo.syncReady
函数尚不存在,您将看到错误。
解决此问题的第一种方法是将您的Kendo <script>
标记移动到MVC包装器输出Kendo JS代码的位置。
<head>
<script src="https://kendo.cdn.telerik.com/2017.1.223/js/jquery.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2017.1.223/js/kendo.all.min.js"></script>
</head>
<body>
@(Html.Kendo().DatePicker().Name("datepicker"))
</body>
这不是理想的两个主要原因:这些脚本将呈现阻止,kendo.all.min.js
文件超过1MB!
你也可以推迟MVC包装器的脚本输出:
@(Html.Kendo().DatePicker().Name("datepicker").Deferred(true))
这可以防止输出使用MVC包装器的JS代码并基本上存储渲染的JS,因此您可以将它放在页面上的任何位置:
<body>
@(Html.Kendo().DatePicker().Name("datepicker").Deferred(true))
<script src="https://kendo.cdn.telerik.com/2017.1.223/js/jquery.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2017.1.223/js/kendo.all.min.js"></script>
@Html.Kendo().DeferredScripts(true)
</body>
如果您继续看到kendo.syncReady is not a function
错误,请查看生成的HTML的来源,并确保在 MVC包装器生成的代码之前正确输出Kendo脚本标记。还要确保使用正确版本的Kendo,并且JS文件和DLL文件之间的Kendo版本是相同的。
答案 1 :(得分:5)
在阅读Telerik网站上的博客条目后,似乎修复是在引用kendo.all.js之后添加对kendo.aspnetmvc.js的引用。我在我的网站上使用版本2017.2.504尝试了这个并修复了问题。
答案 2 :(得分:1)
通过在_Layout.cshtml
视图中添加引用来解决问题。
答案 3 :(得分:0)
我在_layout.cshtml中添加了以下脚本:
<script type="text/javascript" asp-append-version="true" src="~/lib/kendo-ui/js/kendo.aspnetmvc.min.js"></script>