更新流星模板后运行函数

2024-02-19

我有一个流星模板渲染一些我需要执行 jquery 函数的 html。现在,我已经设置了一个依赖项,以便每次与该模板关联的数据(对象列表)发生更改时,该函数都会运行。我完全不确定这是做我想做的事情的最佳方法,但每次我添加/删除/重新排列对象时它都会运行该函数,所以这是一个开始。

However,该函数似乎在模板重新渲染之前运行,因此前一组块被 jquery 化,但我刚刚在该操作上添加的任何块都没有。

有没有办法强制函数在模板渲染/更新后运行?任何帮助深表感谢!

(这里有类似的问题——流星响应式jquery https://stackoverflow.com/questions/27882387/meteor-reactive-jquery——但没有任何答案)

以下是一些可能相关的代码位:

Template.showPictures.rendered =
    Deps.autorun () ->
      album = Albums.findOne(Session.get("selectedAlbum"))

      if (album)
        pictures = album.orderedPictures()
        MyApp.loadJQuery()

Template.showPictures.helpers
  pics: ->
    MyApp.myDependency.depend()

    album = Albums.findOne(Session.get("selectedAlbum"))
    album.orderedPictures()

(为什么自动运行在我的 Template.rendered 中?不确定。这似乎是一个放置它的好地方,但这是我第一次真正处理依赖关系,所以我在这里可能完全偏离基础。任何想法出了什么问题就太好了。)


您可以使用Tracker.afterFlush http://docs.meteor.com/#/full/tracker_afterflush为此(和Tracker是一个新名字Deps):

Template.showPictures.rendered =
    Tracker.autorun () ->
      album = Albums.findOne(Session.get("selectedAlbum"))

      if (album)
        Tracker.afterFlush ->
            // This will get executed when (among other things)
            // the UI has been updated.
            pictures = album.orderedPictures()
            MyApp.loadJQuery()

然而,Meteor 的方式更像是这样的:

<template name="things">
    {{#each things}}
        {{> thing}}
    {{/each}}
</template>

<template name="thing">
    <!-- Show the thing here... -->
</template>
Template.things.helpers({
    things: function(){
        return Things.find()
    }
})

Template.thing.rendered = function(){
    // This get executed each time a new thing is rendered!
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更新流星模板后运行函数 的相关文章

随机推荐