我在渲染回调中有自动运行功能:
Template.drawFlow.rendered = ->
outerData = this
this.autorun ->
# do some work here using reactive collections
s = Session.get("redrawLines")
connectRecursive outerData.data.tasks, outerData.data.startTask
我想要的是在this.autorun中更改数据以重新执行该功能。现在它没有这样做,所以我想知道为什么。
更新 更新了上面的代码,以及我做的一些事件:
Session.set('redrawLines', moment())
应该使自动运行功能内的计算无效。 此外,“outerData”变量应该是被动的,因为它来自IronRouter的“data”部分。
答案 0 :(得分:2)
this.autorun是一个被动计算,但你需要在该自动运行功能中使用被动源,以便在更新该数据时呈现视图。
Meteor中的反应源包括会话变量,游标,Meteor.user等。这是一个很好的阅读,可以帮助你:
https://www.discovermeteor.com/blog/reactivity-basics-meteors-magic-demystified/
希望有所帮助。
答案 1 :(得分:0)
最终工作代码,在DOM完成后触发(与我的解决方案相反):
Template.drawFlow.onRendered ->
console.log "Template.drawFlow.onRendered"
this.autorun ->
data = Router.current().data()
Tracker.afterFlush ->
console.log "dom is now created"