首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有js的twig中的For循环

带有js的twig中的For循环
EN

Stack Overflow用户
提问于 2017-08-25 21:10:48
回答 1查看 1.8K关注 0票数 1

我在for循环中需要一点帮助。

我有一个数组,在这个数组下,我在页面上呈现了25个items.When,然后通过第一个循环,显示了10个项目,通过ajax调用显示了滚动上的其余15个项目。在第一个ajax调用中,我显示了10个项目,其余5个项目显示在第二个ajax call.In中,这个ajax调用我发送产品id,这样我就可以从数据库中获取产品。

注意:-如果我有100个项目,我发送10个ajax调用。

我想要的是我正在发送的ajax调用,在第一个ajax调用中,我发送了10个项目id,其余5个项目id在第二个ajax调用中发送。

现在,我的代码在两个ajax调用中都发送了15个项目in。

以下是代码:

代码语言:javascript
复制
    var prodId = new Array();
    {% for pd in entities %}
       {% if loop.index <= 10 %}
          prodId.push('{{ pd.id }}');
       {% endif %}
    {% endfor %}

    $(document).ready(function(){
    var count=25;//This is dynamic

    if (count>10) {
        count=count-10;
    }

    $(window).scroll(function(){
            var scrollH = $(window).scrollTop()+$(window).height();
            var documentH = $(document).height();
            var infty_scrl_end=$('#sectiontop').offset().top;   
            if (count>0) {
            console.log(prodId);
                if(scrollH > infty_scrl_end){
                    $.ajax({
                        url: "url_ajax",
                        type: "POST",
                        data: { "data" : prodId },
                        success: function(data) {
                            $(data).appendTo('.container');
                        }
                    }); 
                    count=count-10;
                }
            }


    });
    }); 

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-08-26 06:31:13

你可以使用一个队列来解决这个问题,

代码语言:javascript
复制
var prodId = new Array();
{% for pd in entities %}
    prodId.push('{{ pd.id }}'); //Fill up the total queue
{% endfor %}

$(function() {
    $(window).scroll(function() {
        var scrollH = $(window).scrollTop() + $(window).height();
        var documentH = $(document).height();
        var infty_scrl_end = $('#sectiontop').offset().top;

        if (scrollH > infty_scrl_end){
            loadQueue();
        }
    });

    loadQueue();
});


function loadQueue() {
    if (prodId.length == 0) return;

    //split the queue in parts of 10
    var tmp = new Array();    
    while(tmp.length < 10 && prodId.length > 0) {
        tmp.push(prodId.shift());
    }
    if (tmp.length == 0) return;

    $.ajax({
        url: "url_ajax",
        type: "POST",
        data: { "data" : prodId },
        success: function(data) {
            $(data).appendTo('.container');
        }
    }); 

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45882239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档