簡體   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