2016-12-07 7 views
0

меня проблема с https://github.com/leongersen/noUiSliderRequireJS noUiSlider не определен

Использование requireJS, config.js и build.js

paths: { 
    nouislider: '../core/lib/nouislider/nouislider', 
    }, 
    shim: { 
    nouislider: { 
     deps: ['jquery'], 
     exports: '$' 
    }, 
    }, 

сценарий:

require(['jquery', 'nouislider'], function ($) { 
"use strict"; 
    $(function() { 
    var range = document.getElementById('range'); 
    range.style.height = '400px'; 
    range.style.margin = '0 auto 30px'; 
    noUiSlider.create(range, { 
     connect: true, 
     behaviour: 'tap', 
     start: [ 500, 4000 ], 
     range: { 
     // Starting at 500, step the value by 500, 
     // until 4000 is reached. From there, step by 1000. 
     'min': [ 0 ], 
     '10%': [ 500, 500 ], 
     '50%': [ 4000, 1000 ], 
     'max': [ 10000 ] 
     } 
    }); 
    }); 
}); 

На моем веб У меня есть эта ошибка ReferenceError: noUiSlider не определен

У кого-то такая же проблема?

ответ

1

Вы должны требовать это так:

require(['jquery', 'nouislider'], function ($, noUiSlider) { 

Я только добавил последний параметр обратного вызова. Если вы посмотрите на его исходный код, вы увидите, что он обнаруживает, присутствует ли загрузчик AMD (проверяет, что define является функцией и имеет на нем свойство amd), и если это так, он вызывает define. Таким образом, вы должны использовать значение модуля, как показано выше, вместо того, чтобы полагаться на noUiSlider, присутствующих в глобальном пространстве.

Кстати, установка shim для кода, который вызывает define, абсолютно бесполезна. shim предназначен только для кода, который не использует define. Поэтому вы должны удалить shim, который вы покажете в вопросе.