2017-09-19 3 views
0

Kendo UI 2017 ne semble pas fonctionner avec requirejs + angular + angularAMD. Mais quand je passe à la version 2015 de Kendo, cela fonctionne très bien.Kendo UI 2017 ne fonctionne pas avec angular + angularAMD + requirejs

Une suggestion sur comment je peux surmonter cela?

Ceci est un exemple d'application. S'il vous plaît noter - Si je change la version de kendo à 2015 cela fonctionne.

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; 
}); 

Répondre

-1

Après référence à require.js, ajouter ce bloc de code:

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

define.amd est un moyen standard pour informer javascript bibliothèques qu'il ya un chargeur de script utilisé. Je n'ai pas cherché d'indice mais je vois que certaines bibliothèques recherchent define.amd. À partir des documents de l'interface utilisateur de Kendo, https://docs.telerik.com/kendo-ui/third-party/using-kendo-with-requirejs, il y a une déclaration qui indique que l'interface utilisateur de Kendo est déjà un module AMD. Ma solution de contournement les scripts pensent qu'il n'existe aucun chargeur de script existait. Espérons que cette aide