2013-09-07 3 views
2

Документация по кендо ui и requirejs, кажется, пропускает некоторые вещи.Inject kendo ui with requirejs

Они говорят мне, как использовать kendo.web.min, которые все включены:

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

(поиск ключевого слова «прокладки»)

, но я не заинтересован в добавлении большого 2MB kendo.web.min сценарий, я просто хочу, чтобы Призонной шайбу в

kendo.grid.min, но этот файл имеет зависимость к kendo.data.min, который снова имеет зависимость

- kendo.core.min.

Как я могу указать requirejs для загрузки также kendo.data.min и kendo.core.min перед загрузкой kendo.grid.min и после загрузки jquery. Я просто думаю, что это будет правильный порядок.

Это то, что я пытался по ссылке выше 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"] 
     } 
    } 
}); 

Что такое правильный способ определения зависимостей кендо как kendo.data и kendo.core?

На данный момент я получаю исключение при запуске приложения из Дюрандала в systems.js говоря:

«Не удалось загрузить модуль, состоящий (ViewModels/DocumentBrowser) детали:. Свойство \» Jquery \»из неопределенная или пустая ссылка не может быть «доступ».

Я знаю, что эта ошибка не непосредственно о кендо, но так как я представил кендо пользовательский интерфейс с requirejs в модуле DocumentBrowser я получаю это исключение!

UPDATE

По CodingWhitSpike`s посоветуй я изменил свою конфигурацию 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 :) 

}); 

ответ

3

Это взято из официальной документации Кендо в 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> 

Предполагая, что кендо настроили зависимости их модулей правильно, установив путь, такой как k: "http://cdn.kendostatic.com/VERSION/js, который указывает на каталог модулей (не один отдельный модуль) и использовать модуль, как k/kendo.grid.min, если все это необходимо.

+0

Ваша ссылка говорит, что я должен заменить VERSION версией kendo ui, которую я хочу использовать, поэтому я предполагаю, что я это сделал? «http://cdn.kendostatic.com/kendoui.web.2013.2.716.open-source/js», потому что это версия, которую я загрузил. И мне нужно использовать cdn? если да, то как мне нужно правильно определить «k» с моей версией? Я все равно не понимаю, как teleriks использует путь «приложение», потому что у меня их несколько (см. Мой код), каждый из которых указывает на файл .js, в то время как telerik имеет ОДИН путь приложения, указывающий на файлы, а не один файл, который является нечетным. – Elisabeth

+0

Вам не нужно использовать CDN, вы можете просто указать путь к локальным файлам, например: 'k:/scripts/kendo'. Определение для 'app' в приведенном выше примере действительно не требуется. Это просто пример. Его можно оставить без внимания. – CodingWithSpike

+0

@CodingWithSpike Смотрите мое обновление. Ваш совет работал, как я понимаю сейчас, спасибо :) Вы должны бросить свой комментарий в ответ ... ;-) – Elisabeth