模板更新后的流星事件

代码黑猩猩

我正在处理一个使用Sessions自定义分页的Meteor项目。呈现上述项目内容的模板使用ellipsis.js和Highlight.js进行一些DOM格式化。代码看起来像这样:

if (Meteor.isClient) {
    Meteor.startup(function () {
        Session.setDefault("homePageSize", 10);
        Session.setDefault("homePageStart", 0);
    });
}

Template.home.articlesPaginated = function() {
    return Articles.find({published: true}, {sort: {post_date: -1}, skip: Session.get("homePageStart"), limit: Session.get("homePageSize")});
}

Template.home.rendered = function() {
    // Setup ellipsis
    $('.ellipsis').dotdotdot({
        ellipsis: '...',
        wrap: 'word',
        fallbackToLetter: true,
        after: $('a.blog_continue')
    });

    // Setup highlight.js
    $('pre code').each(function(i, block) {
        hljs.highlightBlock(block);
    });
}

Template.home.events({
    'click .next': function(event) {
        var offset = Session.get("homePageStart") + Session.get("homePageSize");
        if (offset < 0) {
            offset = 0;
        }
        Session.set("homePageStart", offset);
    },
    'click .prev': function(event) {
        var offset = Session.get("homePageStart") - Session.get("homePageSize");
        if (offset < 0) {
            offset = 0;
        }
        Session.set("homePageStart", offset);
    }
});

分页工作正常,但是一旦重新渲染模板,我就会放松所有的ellipsis.js和Highlight.js格式。我知道明显的原因是DOM发生了变化,并且由于Template.render仅预先运行一次,并且在重新渲染Template时未发生,因此未应用DOM更新。那么,在模板完成后触发ellipsis.js和Highlight.js以便每次重新渲染模板时都被调用的最佳方法是什么?

尼尔

如果可以将其Articles放入另一个模板,则可以在插入模板时分别应用格式。

Template.article.rendered = function () {
    // Setup ellipsis
    this.$('.ellipsis').dotdotdot({
        ellipsis: '...',
        wrap: 'word',
        fallbackToLetter: true,
        after: $('a.blog_continue')
    });

    // Setup highlight.js
    this.$('pre code').each(function(i, block) {
        hljs.highlightBlock(block);
    });
};

假设您的模板看起来像这样。

<template name="home">
  ...
  {{#each articlesPaginated}}
    {{> article}}
  {{/each}}
  {{> paginationControls}}
  ...
</template>

这具有将格式范围限定为仅文章而不是整个DOM的附加好处。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

流星模板更新后运行功能

来自分类Dev

流星-用户登录后模板未更新

来自分类Dev

流星-仅模板事件?

来自分类Dev

jQuery的流星模板中的事件

来自分类Dev

流星,如何更改事件的模板(视图)?

来自分类Dev

流星:如何使用模板事件检索“ {{this}}-value”

来自分类Dev

流星有模板重新渲染事件吗?

来自分类Dev

流星:检测嵌套模板中的事件

来自分类Dev

流星模板名为“事件”无法渲染。预订的?

来自分类Dev

流星:检测嵌套模板中的事件

来自分类Dev

流星:嵌套模板上触发多个事件

来自分类Dev

0.8.0更新后的流星白屏?

来自分类Dev

流星更新后不断失败

来自分类Dev

用户登录后流星重新渲染模板

来自分类Dev

重新渲染模板后的流星回调

来自分类Dev

流星:模板呈现数据后的调用函数

来自分类Dev

单击按钮后流星重新渲染模板

来自分类Dev

流星中的数据事件后调用函数

来自分类Dev

流星模板事件,显示错误“模板未定义”

来自分类Dev

用于模板更新的流星反应功能

来自分类Dev

流星停止模板在onRendered之后更新

来自分类Dev

如果数据更改,则更新流星模板

来自分类Dev

重新运行模板助手时流星模板未更新

来自分类Dev

更新流星后出现此错误

来自分类Dev

流星用户助手在更新后挂断

来自分类Dev

如何将参数传递给流星中的模板事件?

来自分类Dev

流星-如何正确路由模板事件功能内部

来自分类Dev

将jQuery UI事件添加到流星模板

来自分类Dev

流星-处理嵌套模板中的事件...而不会污染'Session'变量