【问题标题】:How do you create a dependency for a session that depends on another session?如何为依赖于另一个会话的会话创建依赖项?
【发布时间】:2015-05-04 00:30:13
【问题描述】:

我想知道如何重新运行计算。

目前我的功能设置方式不会响应式更新 UI。

我使用_.extend 来扩展来自两个不同集合的文档。 UI 左侧是名称列表。

在特定名称的点击事件中,Session.set('extendedDoc', this) 被创建。在控制台中记录此内容会显示选定的“扩展”文档 - 很好。

帮助器返回选定的扩展文档以显示所有文档内容

displaySelectedExtendedDoc: function() {
    return Session.get('extendedDoc');
}

在本文档中发生更新后,除非单击 name,否则 UI 不会更新。即:设置会话Session.set('extendedDoc', this)

如何响应式更新 UI。

我正在采购http://robertdickert.com/blog/2013/11/14/why-is-my-meteor-app-not-updating-reactively/http://docs.meteor.com/#/full/tracker_autorun,但很难准确掌握如何设置反应式上下文

Session.set('extendedDoc', this) depends on a Collection.find(_id: Session.get('ANOTHER_SESSION_VALUE))

【问题讨论】:

  • 似乎转换(在整个集合上或在查找上)可能是比使用会话变量更好的解决方案。你能更详细地解释一下实际问题吗?
  • transform 不是响应式的,但不使用会话变量是正确的

标签: session meteor


【解决方案1】:

据我了解,您将文档存储在会话中,然后在助手中返回会话。您可以在帮助程序而不是会话中返回文档:

displaySelectedExtendedDoc: function() {
    return Collection.findOne(Session.get('ANOTHER_SESSION_VALUE));
}

【讨论】:

  • 托马斯,这解决了问题。返回游标的助手保持反应性。我将我的 findOne 调用放在 #with 助手中,以便加入反应在页面上发生。我对我的代码做了一些调整,现在它是被动的。超级棒!
猜你喜欢
  • 2011-01-20
  • 2014-12-16
  • 2018-10-01
  • 2020-07-24
  • 1970-01-01
  • 2010-10-06
  • 2019-12-31
  • 2019-08-08
  • 1970-01-01
相关资源
最近更新 更多