我的 webapp 允许其用户与项目进行交互。这些物品可以放入垃圾箱,从而从常规物品中删除。我有一个名为“垃圾箱”的专用子菜单,用户可以在其中回收或删除以前放入垃圾箱的项目。
我想有条件地显示垃圾桶菜单,前提是垃圾桶中有项目,具体取决于用户权限。
但是,我不想在用户进入垃圾箱子菜单之前发布垃圾箱中的项目。
我目前所做的是调用一个返回标志的方法(用户垃圾箱中是否有项目?)。但这不是反应性的:如果另一个用户丢弃了一个项目,子菜单只会在页面重新加载后出现。
如何发布反应性布尔标志?
我考虑cursor.Observe()
过为每个菜单/用户使用一个,并通知创建(通过更新)或删除(通过删除)使用publication.changed()
一个项目(带有一个布尔字段)的假发布集合上的项目,但考虑到用于的资源,这似乎有点过头了任务。
我还考虑在项目状态更改时更新每个用户配置文件中的专用字段。再说一次,对于一个简单的功能来说,这操作太多了:我需要为每个涉及项目状态更改的操作评估每个用户权限,并且每次用户权限更改时,重新评估他回收每个项目的权限。
消耗较少的替代方法是将我的方法调用包装在菜单中template.Autorun()
。但是,这不是反应式解决方案,因为它仅在重新呈现菜单时触发。
你遇到过同样的问题吗?您是否有可能的替代解决方案(性能方面)?