Magento2 переписать файл javascript из основного модуля в пользовательский модуль [дубликат]


Я создал пользовательский модуль, который использует компонент пользовательского интерфейса

<uiComponent name="product_listing"/>

В принципе, я хочу создать файл javascript в своем модуле, который перезаписывает/переопределяет только исходную часть js-файла этого компонента:

vendor/magento/module-ui/view/base/web/js/grid/provider.js:

/**
 * Reloads data with current parameters.
 */
    reload: function () {
        this.trigger('reload');

        if (this.request && this.request.readyState !== 4) {
            this.request.abort();
        }
        console.log(this);
        this.request = $.ajax({
            url: this['update_url'],
            method: 'GET',
            data: this.get('params'),
            dataType: 'json'
        });

        this.request
            .done(this.onReload)
            .error(this.onError);
    },

Может ли кто-нибудь, пожалуйста, подсказать мне, как сделать это наилучшим и эффективным способом? Спасибо!

Author: Lachezar Raychev, 2016-02-29

1 answers

Вы можете попробовать функцию "mixins", все, что вам нужно, это создать модуль RequireJS с помощью расширенного метода, подобного этому:

Default_mixin.js :

define(function () {
    'use strict';

    return function (target) { // target == Result that Magento_Ui/... returns.
        var parent_reload = target.reload;
        target.reload = function () {
            console.log('before reload');
            parent_reload.apply(this, arguments); //call parent reload
            console.log('after reload');
        }
        return target; // new result that all other modules receive 
    };
});

Requirejs-config.js :

config: {
    mixins: {
        'Magento_Ui/web/js/grid/provider.js': {  // Target module
            'My_Module/js/payment/default_mixin': true  // Extender module
        }
    }
}
 1
Author: KAndy, 2016-02-29 10:43:11