Magento2: ฉันจะลบล้าง core js module price-box.js ได้อย่างไร


15

Magento_Catalog/js/price-box.jsฉันต้องการที่จะขยาย ฉันได้ใช้คุณลักษณะ 'mixins' price-box.jsแต่ก็ไม่ได้ทำงานให้

requirejs-config.js:

var config = {
    config: {
        mixins: {
            'Magento_Catalog/js/price-box': {
                'My_Module/js/price-box/pluggin': true
            }
        }
    }
};

My_Module/view/frontend/web/js/price-box/pluggin.js

define(function () {
    'use strict';

    return function (target) { 
        // modify target
        var reloadPrice = target.reloadPrice;
        target.reloadPrice = function() {
           cosole.log("hello");
        };
        return target;
    };
});

Yogesh ให้ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้
Codrain Technolabs Pvt Ltd

คำตอบ:


12
  1. ระบุไฟล์ PriceBox js ในโมดูลที่กำหนดเองของคุณrequirejs-config.jsด้วยชื่อเดียวกันกับที่ประกาศไว้แล้วในโมดูลหลัก ในกรณีของเรามันเป็นpriceBoxเหมือนด้านล่าง โมดูลของคุณrequirejs-config.jsจะเป็นอย่างไร

    var config = {
        map: {
             '*': {
                    priceBox:'namespace_modulename/js/custompricebox',
             }
        }
    };
  2. ตอนนี้สร้างไฟล์custompricebox.jsไปยังเส้นทางที่ระบุข้างต้น ฉันสมมติว่าคุณต้องการที่จะขยายreloadPriceวิธีการในกล่องราคา ดังนั้นคุณcustompricebox.jsจะเป็นเหมือนด้านล่าง

    define(
        [
            'jquery',
            'Magento_Catalog/js/price-utils',
            'underscore',
            'mage/template',
            'mage/priceBox',
            'jquery/ui'
        ],
        function ($, utils, _, mageTemplate) {
    
            'use strict';
    
            $.widget('yournamespace.custompriceBox', $.mage.priceBox, {
                /**
                 * Render price unit block.
                 */
                reloadPrice: function reDrawPrices() {
    
                    var priceFormat = (this.options.priceConfig && this.options.priceConfig.priceFormat) || {},
                        priceTemplate = mageTemplate(this.options.priceTemplate);
    
                    _.each(this.cache.displayPrices, function (price, priceCode) {
                        price.final = _.reduce(price.adjustments, function(memo, amount) {
                            return memo + amount;
                        }, price.amount);
    
                        // you can put your custom code here. 
    
                        price.formatted = utils.formatPrice(price.final, priceFormat);
    
                        $('[data-price-type="' + priceCode + '"]', this.element).html(priceTemplate({data: price}));
                    }, this);
                },
    
    
            });
    
            return $.yournamespace.custompriceBox;
        }
    );
  3. โปรดทราบว่ารหัสนี้ไม่ได้ทำการทดสอบ อาจมีข้อผิดพลาดของ syntex แจ้งให้เราทราบหากคุณต้องการความช่วยเหลือเพิ่มเติมในเรื่องนี้


สวัสดี Yagnesh เราสามารถทำมันผ่าน Mixin ได้หรือไม่? แทนที่จะแทนที่มันเราสามารถขยายมันได้หรือไม่
Rajput ที่น่ายกย่อง

@PrafulRajput ฉันยังไม่ได้ใช้ mixin เลยฉันจะอัปเดตคุณเมื่อฉันทำมัน
Codrain Technolabs Pvt Ltd

2
อย่างใดก็ไม่ได้ผลสำหรับฉัน (เวอร์ชั่น 2.1.2) นอกจากนี้ mage / priceBox ยังทำให้ฉันมีข้อผิดพลาดสคริปต์
ลองใช้

1
มีคนประสบความสำเร็จในการเขียนใหม่ผ่าน Mixin หรือไม่?
Pol Ravalitera
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.