我有一个流星模板渲染一些我需要执行 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(使用前将#替换为@)