【问题标题】:Gridx/Dojo & jQuery : Is there a callback when sorting is completed?Gridx/Dojo & jQuery:排序完成时有回调吗?
【发布时间】:2014-10-29 15:12:20
【问题描述】:

此表是使用 NodeWebkit 中的 GridX/dojo 生成的。 “[BV][B][V]”是 jQuery 使用类选择器处理的链接。但是,一旦我对网格进行排序,听众就会被解除绑定。如何重新应用点击功能?排序渲染完成有回调吗?

【问题讨论】:

    标签: javascript jquery dojo node-webkit dojo.gridx


    【解决方案1】:

    我知道在 gridx 中排序完成时没有回调或事件。

    但是,整个网格在排序或过滤时会重新呈现。所以你可以使用类似的东西:

    grid.connect(grid.body, 'onRender', function(){
        $(document).on("click", "a.myBVlink", function() {
          ...
        });
        $(document).on("click", "a.myBlink", function() {
          ...
        });
        $(document).on("click", "a.myVlink", function() {
          ...
        });
    });
    

    【讨论】:

    • 这行得通。但渲染两次 - 对我来说不是问题。
    【解决方案2】:

    我创建了一个包装器 div 并将点击监听器添加到它 -

    $('#gridWrapper').on('click','.myLinkClass',function(){
        console.log('clicked');
        console.log(this);
    });
    

    gridWrapper 未更改。所以监听器保持活跃,.myLinkClass 选择器选择<a href="#" class="myLinkClass">text</a>,尽管排序。

    【讨论】:

      【解决方案3】:

      就像@mccannf 发起的一样,我使用重新渲染事件。为了防止重复工作,我只使用一个计数变量,并且只进行第二次工作。
      注意:如果最初网格为空,则我将计数器设置为 1,因为事件为只调用一次。

      var countRender = 0;
      if (grid.store.data.length == 0) countRender=1; 
      
      grid.connect(grid.body, 'onRender', function(gridName){
          if (!countRender++) return;
          countRender=0;
          ...
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多