2013-09-07 5 views
2

La documentation sur kendo ui et requirejs semble manquer quelque chose.Injecter kendo ui avec requirejs

Ils me disent comment utiliser kendo.web.min qui ont tout inclus:

http://www.kendoui.com/blogs/teamblog/posts/13-05-08/requirejs-fundamentals.aspx

(recherche par mots clés « cale »)

mais je ne suis pas intéressé à ajouter le grand 2MB script kendo.web.min, je veux juste caler le

kendo.grid.min mais ce fichier a une dépendance à kendo.data.min qui a encore une dépendance

à kendo.core.min.

Comment puis-je demander à requirejs de charger aussi kendo.data.min et kendo.core.min avant de charger kendo.grid.min et après que jquery ait été chargé. Je suppose que ce serait le bon ordre.

C'est ce que j'ai essayé à partir du lien ci-dessus telerik:

requirejs.config({ 
    paths: { 
     'text': '../Scripts/text', 
     'durandal': '../Scripts/durandal', 
     'plugins': '../Scripts/durandal/plugins', 
     'transitions': '../Scripts/durandal/transitions', 
     'knockout': '../Scripts/knockout-2.3.0', 
     'jquery': '../Scripts/jquery-2.0.3',  
     'kendoGrid': '../Scripts//kendo.grid.min', 
    }, 
    shim: { 
     "kendoGrid": { 
      deps: ["jquery"] 
     } 
    } 
}); 

Quelle est la bonne façon de définir les dépendances de kendo comme kendo.data et kendo.core?

Au moment où je reçois une exception au démarrage de l'application de Durandal dans les systems.js disant:

"Impossible de charger le module composé (viewmodels/DocumentBrowser) Détails:. La propriété \" jQuery \ » de une référence non définie ou nul ne peut être « accessible ».

Je sais que cette erreur est pas directement de kendo, mais depuis que j'introduit ui kendo avec requirejs dans le module DocumentBrowser je reçois cette exception!

MISE à JOUR

Selon CodingWhitSpike`s conseil que j'ai changé la configuration de requirejs:

requirejs.config({ 
    paths: { 
     'text': '../Scripts/text', 
     'durandal': '../Scripts/durandal', 
     'plugins': '../Scripts/durandal/plugins', 
     'transitions': '../Scripts/durandal/transitions', 
     'knockout': '../Scripts/knockout-2.3.0', 
     'jquery': '../Scripts/jquery-2.0.3', 
     'moment': '../Scripts/moment', 
     k: "../Scripts/kendo" 
    } 
}); 

define(['durandal/app', 'plugins/dialog', 'knockout', 'services/dataservice', 'plugins/router', 'moment', 'k/kendo.grid.min'], 
    function (app, dialog, ko, dataservice, router, moment, kendoGrid) { 

$("#grid").kendoGrid(...); => kendoGrid is instantiated and it works :) 

}); 

Répondre

3

Ceci est pris de la documentation Kendo officielle à http://docs.kendoui.com/getting-started/using-kendo-with/using-kendo-with-requirejs

<!-- first, load RequireJS --> 
<script src="require.js"></script> 

<!-- configure RequireJS with two logical paths: 
    - "app/" will be used for your files 
    - "k/" will be for Kendo UI modules --> 

<script> 
    requirejs.config({ 
     paths: { 
      app: "/path/to/your/files", 
      k: "http://cdn.kendostatic.com/VERSION/js" 
     } 
    }); 

    require([ 
     "http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js", 
     "app/foo", 
     "app/bar", 
     "k/kendo.menu.min", 
     "k/kendo.grid.min" 
    ], initApp); 

    function initApp() { 
    // main entry point of your application 
    } 
</script> 

En supposant que le kendo a mis en place des dépendances de leurs modules correctement, en mettant en place un chemin comme k: "http://cdn.kendostatic.com/VERSION/js qui pointe vers le répertoire des modules (pas un module individuel) et utiliser un module comme k/kendo.grid.min devrait tout ce qui est nécessaire.

+0

votre lien dit que je dois remplacer VERSION avec la version d'ui de kendo que je veux utiliser, donc je suppose que je fais cela? "http://cdn.kendostatic.com/kendoui.web.2013.2.716.open-source/js" car c'est la version que j'ai téléchargée. Et ai-je besoin d'utiliser un cdn? si oui, comment dois-je définir correctement "k" avec ma version? Je ne comprends pas comment utiliser teleriks, parce que j'en ai plusieurs (voir mon code) pointant vers un fichier .js alors que telerik a UN chemin d'application pointant vers des fichiers et non un fichier bizarre. – Elisabeth

+0

Vous n'avez pas besoin d'utiliser un CDN, vous pouvez juste faire le chemin vers vos fichiers locaux, par exemple: 'k:/scripts/kendo'. La définition de 'app' dans l'exemple ci-dessus n'est pas vraiment nécessaire. C'est juste un exemple. Cela peut être laissé de côté. – CodingWithSpike

+0

@CodingWithSpike Voir ma mise à jour. Votre conseil a fonctionné comme je comprends maintenant, merci :) Vous devriez jeter votre commentaire dans une réponse ... ;-) – Elisabeth