Meteor 0.8 Blaze如何更新Jquery插件的渲染更改

暴风雨

我的问题是在DOM中更新一组元素时如何获取1个事件或呈现的回调?如果我按照Blaze Wiki中的链接https://github.com/avital/meteor-ui-new-rendered-callback,这不是我想要的。如果我遵循第二条建议,我将获得与元素一样多的呈现调用。并且父元素在页面加载时将仅获得1个呈现的回调。

就我而言,我使用的是Footable Jquery插件来格式化表格。初始加载工作正常,但是如果我在Collection查找中更改过滤器变量,则DOM更新并且没有渲染被调用,因为Blaze仅调用一次渲染。我不想将其放到另一个模板中,因为这仅意味着对呈现的多个调用,从而在整个表只需要一个时就对Footable进行了多次调用。

任何帮助表示赞赏。

<template name="customerData">
  <table class="table">
    {{#each dataRows}}
    <tr>
      <td>{{first_name}}</td>
      <td>{{last_name}}</td>
      <td>{{email}}</td>
     {{#each phones}}
        <td>{{phone}}</td>
     {{/each}}
    </tr>
    {{/each}}
  </table>
</template>

Template.customerData.rendered = function(){
  $(".table").footable();
}

Template.customerData.phones = function(){
    var result = [];

    _.each(this.phoneNumbers, function(element, index, list){
       result.push({ phone: element});
    });

return result;
}
托马斯·莱纳尔奇克(Tomasz Lenarcik)

最好的解决方案是编写自定义块帮助器。Lemme为您做:)

执行

UI.registerHelper('footableBody', function () {

  var dependency = new Deps.Dependency(),
      dataSource = this,
      handle, footable;

  return UI.Component.extend({
    render: function () {
      var self = this;
      return UI.Each(function () {
        return dataSource;
      }, UI.block(function () {
        dependency.changed();
        return self.__content;
      }));
    },
    rendered: function () {
      var $node = $(self.firstNode).closest('table');
      handle = Deps.autorun(function () {
        if (!footable) {
          $node.footable();
          footable = $node.data('footable');
        } else {
          footable.redraw();
        }
        dependency.depend();
      });
    },
    destroyed: function () {
      handle && handle.stop();
    },
  });
});

用法

现在,您可以在模板中执行以下操作:

<table class="table">
  <thead>
    ...
  </thead>
  <tbody>
  {{#footableBody dataRows}}
    <tr>
      <td>{{first_name}}</td>
      <td>{{last_name}}</td>
      <td>{{email}}</td>
      <td>{{phone}}</td>
    </tr>
  {{/footableBody}}
  </tbody>
</table>

当然,您应该根据自己的需要自定义帮助程序的行为。

感言

还有另一个更通用的解决方案,它遵循此处如何markdown实现帮助程序的模式但是,我不鼓励将此策略应用于您的特定用例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Meteor 0.8 Blaze如何更新Jquery插件的渲染更改

来自分类Dev

如何在模板更改时使用Meteor 0.8(Blaze)运行jQuery插件?

来自分类Dev

在Meteor / Blaze中渲染静态HTML

来自分类Dev

如何将整数 0-80 转换为点坐标 (0,0) -> (8,8)?

来自分类Dev

导出表值Meteor Blaze

来自分类Dev

如何使用rspec测试.rjust 8,“ 0”的等式

来自分类Dev

如何分配8个块但文件大小为0?

来自分类Dev

Windows 8(8.1)中的jQuery Ajax readystate 0 status 0仅在Chrome上

来自分类Dev

如何与Meteor mongoimport?

来自分类Dev

如何关闭Meteor Mongo?

来自分类Dev

如何让Polymer与Meteor合作?

来自分类Dev

如何从Meteor调用Cordova插件方法?

来自分类Dev

如何使用引导导航栏构建Meteor Blaze UI

来自分类Dev

如何使用Blaze Meteor显示收藏集中的所有内容

来自分类Dev

如何使用Blaze Meteor显示收藏集中的所有内容

来自分类Dev

如何修复UnicodeDecodeError:'utf8'解码在SQL文件中读取的字节0xc0

来自分类Dev

如何将 32 位整数中的第 8 个位置编号更改为 0

来自分类Dev

Meteor如何从Meteor包中导出Meteor.publish和Meteor.method代码

来自分类Dev

Meteor Blaze:在渲染父模板之前不要等待子模板渲染

来自分类Dev

Pygame.mouse.set_cursor((8,8),(0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0 ,0))导致错误

来自分类Dev

0字节的CollectionFS / Meteor-CollectionFS上传文件

来自分类Dev

Meteor Autoform更新嵌套集合

来自分类Dev

在Meteor中更新我的文件

来自分类Dev

页面更改后如何重设Meteor AutoForm?

来自分类Dev

Android Studio错误:(8,0)找不到ID为'android'的插件

来自分类Dev

Android Studio错误:(8,0)找不到ID为'android'的插件

来自分类Dev

如何部分更新meteor.users.profile?

来自分类Dev

如何使用Reactivevar更新Meteor中的数据

来自分类Dev

在Meteor中更改URL后重新渲染fullCalendar

Related 相关文章

  1. 1

    Meteor 0.8 Blaze如何更新Jquery插件的渲染更改

  2. 2

    如何在模板更改时使用Meteor 0.8(Blaze)运行jQuery插件?

  3. 3

    在Meteor / Blaze中渲染静态HTML

  4. 4

    如何将整数 0-80 转换为点坐标 (0,0) -> (8,8)?

  5. 5

    导出表值Meteor Blaze

  6. 6

    如何使用rspec测试.rjust 8,“ 0”的等式

  7. 7

    如何分配8个块但文件大小为0?

  8. 8

    Windows 8(8.1)中的jQuery Ajax readystate 0 status 0仅在Chrome上

  9. 9

    如何与Meteor mongoimport?

  10. 10

    如何关闭Meteor Mongo?

  11. 11

    如何让Polymer与Meteor合作?

  12. 12

    如何从Meteor调用Cordova插件方法?

  13. 13

    如何使用引导导航栏构建Meteor Blaze UI

  14. 14

    如何使用Blaze Meteor显示收藏集中的所有内容

  15. 15

    如何使用Blaze Meteor显示收藏集中的所有内容

  16. 16

    如何修复UnicodeDecodeError:'utf8'解码在SQL文件中读取的字节0xc0

  17. 17

    如何将 32 位整数中的第 8 个位置编号更改为 0

  18. 18

    Meteor如何从Meteor包中导出Meteor.publish和Meteor.method代码

  19. 19

    Meteor Blaze:在渲染父模板之前不要等待子模板渲染

  20. 20

    Pygame.mouse.set_cursor((8,8),(0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0 ,0))导致错误

  21. 21

    0字节的CollectionFS / Meteor-CollectionFS上传文件

  22. 22

    Meteor Autoform更新嵌套集合

  23. 23

    在Meteor中更新我的文件

  24. 24

    页面更改后如何重设Meteor AutoForm?

  25. 25

    Android Studio错误:(8,0)找不到ID为'android'的插件

  26. 26

    Android Studio错误:(8,0)找不到ID为'android'的插件

  27. 27

    如何部分更新meteor.users.profile?

  28. 28

    如何使用Reactivevar更新Meteor中的数据

  29. 29

    在Meteor中更改URL后重新渲染fullCalendar

热门标签

归档