2015-02-25 6 views
2

Когда подкладок Handsontable с requirejs я получаю следующее сообщение об ошибке и трассировку стекаИспользование Handsontable с RequireJS

Uncaught TypeError: undefined is not a function VM18361 handsontable.full.js:20729 
unformatNumeral         VM18361 handsontable.full.js:21325 
numeral.fn.Numeral.unformat      VM18361 handsontable.full.js:21325 
numeral           VM18361 handsontable.full.js:21037 

Это происходит даже с примерами из http://handsontable.com/.

Мой requirejs конфигурации и модуль, используя handsontable посмотреть, как этот

require.config({                                   
paths: { 
    handsontable : '/js/dependencies/handsontable.full'                    
},                    
shim: {                    
    'handsontable': {                
    deps: ['jquery'],               
    exports: 'Handsontable'              
    } 
}                   

define(['handsontable'], function(Handsontable) { 
    var data = [ 
    ['', 'Maserati', 'Mazda', 'Mercedes', 'Mini', 'Mitsubishi'], 
    ['2009', 0, 2941, 4303, 354, 5814], 
    ['2010', 3, 2905, 2867, 412, 5284], 
    ['2011', 4, 2517, 4822, 552, 6127], 
    ['2012', 2, 2422, 5399, 776, 4151] 
    ]; 

    var container = document.getElementById('example'); 

    var config = { 
    data: data, 
    minSpareRows: 1, 
    colHeaders: true, 
    contextMenu: true 
    }; 

    var hot = new Handsontable(container, config); 
}); 

Кто-нибудь еще возникла эта проблема?

В настоящее время единственное решение, которое я вижу, включает в себя мобильную связь как глобальный объект (обходя всю цель требований управления зависимостями).

Буду признателен за лучшее решение.

Спасибо!

+0

Вы можете поделиться кодом, который дает ошибку? – Vishwanath

+1

Похожая проблема с внутренним API-интерфейсом Handsontable при использовании с requireJS, вы должны сообщить об этом. Ваш код верен, и ошибка, предоставленная вами, указывает код внутри handsontable, означает, что вы уже получили объект от RequireJS – Vishwanath

+0

Спасибо, я didn Не хочу сообщать о проблеме, прежде чем я был уверен, что я не испортил что-то в своем собственном коде. – danba

ответ

1

Я считаю, что проблема заключается в том, что вы используете полную версию Handsontable, которая включает в себя зависимости, такие как Numeral.js. Так как некоторые из зависимостей совместимы с AMD, то есть есть вызов define(), вы получаете ссылку на Numeral.js, а не на «Handsontable».

Чтобы использовать его правильно, вам нужно использовать только платный дистрибутив файл, handsontable.js и включить все зависимости, необходимые для этой версии Handsontable. Что-то вроде этого:

require.config({                                   
    paths: { 
    handsontable : '/js/dependencies/handsontable'                    
    },                    
    shim: {                    
    'handsontable': {                
     deps: ['moment', 'pikaday', 'zeroclipboard'],               
     exports: 'Handsontable'              
    } 
    } 
}) 

Я не уверен, какая версия Handsontable вы используете, текущую версию, 0.20.3, зависит от момента, pikaday и zeroclipboard. См. dist/READEME.md для получения дополнительной информации.

Смежные вопросы