我一直在尝试扩展magento 2的$.mage.loader
小部件。我有一个requirejs-config.js文件,其中包含以下行
var config = {
map: {
'*': {
'mage/loader' : 'Youssuph_Bakerscheckout/js/custom-mage-loader'
}
}
};
custom-mage-loader.js
文件的内容是
define([
'jquery',
'mage/template',
'jquery/ui',
'mage/translate'],
function ($, mageTemplate) {
'use strict';
$.widget("bakers.loader", $.mage.loader, {
options: {
icon: '',
texts: {
loaderText: $.mage.__('Please wait...'),
imgAlt: $.mage.__('Loading...')
},
template:
'<div class="loading-mask" data-role="loader">' +
'<div class="loader">' +
'<img alt="<%- data.texts.imgAlt %>" src="'+loadingBakersLogo+'">' +
'<p><%- data.texts.loaderText %></p>' +
'</div>' +
'</div>'
}
});
return $.bakers.loader;
});
我已经确认此文件在浏览器中加载,但它不起作用。加载程序在页面加载期间正常工作,我看到错误消息 -
基数不是一个函数
我做错了什么?
你的requirejs-config.js没错,但是你的js文件不,像这样更改参数:
define([
'jquery',
'jquery/ui',
'mage/loader'],
function ($) {
$.widget('your_namespace.loader', $.mage.loader, {
options: {
texts: {
loaderText: $.mage.__('Foo')
},
template:
'<div>Your template</div>'
}
});
return $.your_namespace.loader;
});
现在使用:jQuery('body'(.loader('show'(,看看你新的自定义加载器!
已经有一段时间了,但如果其他人偶然发现了这个答案。
维尤拉多是不正确的。错误在于requirejs-config.js
.正确的是没有"法师/"的引用,如下所示:
var config = {
map: {
'*': {
'loader' : 'Youssuph_Bakerscheckout/js/custom-mage-loader'
}
}
};
custom-mage-loader.js
是正确的,如初始问题中发布的那样。