繁体   English   中英

Kendo UI 2017不适用于angular + angularAMD + requirejs

[英]Kendo UI 2017 doesn't work with angular + angularAMD + requirejs

Kendo UI 2017似乎不适用于requirejs + angular + angularAMD。 但是当我切换到Kendo 2015版时,它可以正常工作。

关于如何克服这个问题有什么建议吗?

这是示例应用程序。 请注意-如果我将Kendo版本更改为2015,则可以使用。

https://plnkr.co/edit/DjOq6BfOVSHvIuSHliH8?p=preview

Index.html

<!DOCTYPE html>
<html>
<head>
       <script data-main="main.js" src="//cdnjs.cloudflare.com/ajax/libs/require.js/2.1.9/require.min.js"></script>
       <link href="//kendo.cdn.telerik.com/2016.3.914/styles/kendo.common.min.css" rel="stylesheet" />
</head>
<body>
       <h1>Hello Plunker!</h1>
       <div kendo-tab-strip k-content-urls="[ null, null]">
              <ul>
                     <li class="k-state-active">First tab</li>
                     <li>Second tab</li>
              </ul>
              <div style="padding: 1em">
                     This is the first tab
              </div>
              <div style="padding: 1em">
                     This is the second tab
              </div>
       </div>
</body>
</html>

main.js

require.config({
       baseUrl: "",
       waitSeconds: 0,
       paths: {
              'jquery': 'https://code.jquery.com/jquery-2.1.3.min',
              'angular': 'https://code.angularjs.org/1.3.12/angular',
              'angularamd': '//cdn.jsdelivr.net/angular.amd/0.2/angularAMD.min',
              'kendo': 'https://kendo.cdn.telerik.com/2017.3.913/js/kendo.all.min',
              //'kendo' : 'https://kendo.cdn.telerik.com/2015.1.429/js/kendo.all.min'  --This version works
       },
       shim: {
              'angularAMD': ['angular'],
              'kendo': ['jquery', 'angular']
       },
       deps: ['application-configuration']
});

application-configuration.js

define(['angularamd', 'kendo'], function (angularAMD) {
       var app = angular.module("mainModule", ['kendo.directives']);
       angularAMD.bootstrap(app);
       return app;
});

在引用require.js之后,添加以下代码块:

<script>
  define.amd = null;
</script>

define.amd是通知javascript库正在使用脚本加载器的标准方法。 我没有寻找线索,但是我看到一些库正在检查define.amd。 从Kendo UI的文档https://docs.telerik.com/kendo-ui/third-party/using-kendo-with-requirejs中 ,有一条语句表明Kendo UI js已经是AMD模块。

The minified Kendo UI JavaScript files are AMD modules and work with compatible loaders such as RequireJS. You can use this feature to load only the needed Kendo UI JavaScript files instead of kendo.all.min.js.

我的变通办法是欺骗脚本,使脚本认为不存在任何脚本加载器。 希望这个帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM