Требуется настройка шим- jquery.flot/jquery.flot.selection

Так что я работаю с jquery.flot и jquery.flot.selection и, так как define({... загружает модули асинхронно, у меня возникла проблема, потому что плагин выбора пытается вставить себя в $.plot.plugins (который создан jquery.flot), но в тот момент $.plot.plugins все еще не определен.

Я обнаружил, что аргумент "shim" в require.config должен помочь мне в этом, но мне не повезло... так вот краткое изложение... jquery.flot создает $.plot, а jquery.flot.selection добавляет себя в $.plot.plugins

что я пробовал...

shim:{
    'js/lib/jquery.flot':{
        exports:'$.plot'
    },
    'js/lib/jquery.flot.selection':{
        deps:['js/lib/jquery.flot']
    }
}

также

shim:{
    'js/lib/jquery.flot.selection':['js/lib/jquery.flot']
}

мой плагин выглядит так..

define(['jquery','lib/jquery.flot','lib/jquery.flot.selection'], function() {
(function($) {
    // jQuery plugin definition
.....

Я тоже пробовал

define(['jquery'],function(){
require[('js/lib/jquery.flot.selection'],function(){
//jQuery plugin definition
...

Что я должен делать???

1 ответ

Для любого, кто столкнется с этим в будущем, RequireJS может быть немного непрозрачным, когда дело доходит до диагностики проблем. Вот рабочий пример RequireJS 2 с jquery.flot и jquery.flot.selection без использования модуля.

Трудно сказать, что отличается между этим примером и вопросом выше, поэтому непрозрачность!

require.config({
    shim: {
        'jquery': {
            exports: '$'
        },
            'jquery.flot': {
            deps: ['jquery'],
            exports: '$.plot'
        },
            'jquery.flot.selection': {
            deps: ['jquery.flot']
        }
    },
    paths: {
        'jquery': '//cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min',
            'jquery.flot': '//cdnjs.cloudflare.com/ajax/libs/flot/0.8.1/jquery.flot.min',
            'jquery.flot.selection': 'https://raw.github.com/flot/flot/master/jquery.flot.selection'
    }
});

require(['jquery', 'jquery.flot', 'jquery.flot.selection'], function ($) {
    // jQuery plugin definition
    console.log($.plot);
    $('#x').text($.plot.plugins);
});
Другие вопросы по тегам