M2 如何ajax请求后初始化js

3.54K 浏览开发笔记

M2 如何ajax请求后初始化js

m2代码里经常看到

<script type="text/x-magento-init">

类似的初始化js代码。

比如加入购物车 ajax提交的。

<script type="text/x-magento-init">
{"[data-role=tocart-form], .form.map.checkout": {"catalogAddToCart": {}}}
</script>

当产品列表使用ajax分页的时候,这个初始化的代码就失效了,导致无法ajax提交 直接跳转页面去了。

解决办法很简单,就是在ajax 结束后 加一行

contentEle.trigger('contentUpdated');

比如:

var contentEle = $('#wwof_product_listing_ajax_content'); 
function ajaxGetProduct(params,url=false){
    if(!url){
        url = '<?php echo $block->getAjaxUrl(); ?>';
    }
    $.ajax({showLoader: true,url: url,data: params,type: "POST",dataType: 'json'})
    .done(function (data) {
        //contentEle.removeClass('hideme'); 
        var html = data.content;
        contentEle.html(html);
        contentEle.trigger('contentUpdated');
    });
}

这样的话 就告诉页面 内容更新了。要求再初始化一次相关的js。

0