Добрый день!
Подскажите, пожалуйста как правильно подключить скрипт по URL используя loader. Посмотрел для примера принцип подключения jQuery и сделал по аналогии, но скрипт не подключается. Не могу разобраться что я упустил.
dropzone.deps.js:
({
mustDeps: [ 'i-bem-dom' ],
shouldDeps: [
{ block: 'loader', mods : { type : 'js' } },
{ elem: 'config' },
{ mods: { theme: ['islands', 'default'], size: ['s', 'm', 'l', 'xl'], width: ['available'] } },
]
})
dropzone.bemhtml.js:
block('dropzone')(
tag()('form'),
attrs()({ action: '/post' }),
addJs()(true)
);
dropzone__config.js:
/**
* @module dropzone__config
* @description Configuration for Dropzone
*/
modules.define('dropzone__config', function(provide) {
provide(/** @exports */{
/**
* URL for loading Dropzone (http://www.dropzonejs.com)
* @type {String}
*/
url: 'https://cdnjs.cloudflare.com/ajax/libs/dropzone/5.1.1/dropzone.js',
});
});
dropzone.js:
/**
* @module dropzone
*/
modules.define('dropzone', ['i-bem-dom', 'loader_type_js', 'dropzone__config'],
function(provide, bemDom, loader, cfg)
{
const Dropdown = bemDom.declBlock(this.name, {
/**
* On modifier set
* callback functions
*/
onSetMod: {
js: {
/**
* @param modName
* @param modVal
* @param currentModVal
*/
inited() {
console.log('Dropzone - inited()');
}
}
},
}, {
lazyInit: false,
onInit() {
console.log('Dropzone - onInit()');
return this.__base.apply(this, arguments);
},
});
function doProvide(flag = 'defined')
{
console.log('Dropzone - doProvide(' + flag + ')');
provide(Dropzone);
}
typeof Dropzone !== 'undefined' ? doProvide('undefined') : loader(cfg.url, doProvide);
}
);
console.log:
Dropzone - doProvide(defined)
Dropzone - onInit()
Dropzone - inited()
@sermonis а есть возможность опубликовать код, на котором воспроизводится проблема, на github, чтобы можно было подебажить?
@tadatuta, вроде заработало! Чудеса, не могу понять почему сразу не получилось, вроде ничего не менял. Я сегодня оформлю этот блок и выложу на github, ссылку скину сюда.