Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当某些场改变时,流星不会重新启动_Javascript_Meteor - Fatal编程技术网

Javascript 当某些场改变时,流星不会重新启动

Javascript 当某些场改变时,流星不会重新启动,javascript,meteor,Javascript,Meteor,Meteor在文档更改时重新呈现视图 Template.story.data = function() { var storyID = Session.get('storyID'); var story = Stories.findOne({ _id: storyID }) if (!story) return; return story; }; 这里有一个故事模板的模板助手,从故事文档中获取故事 当像story.title这样的字段发生更改时,我希望模

Meteor在文档更改时重新呈现视图

Template.story.data = function() {
  var storyID = Session.get('storyID');
  var story = Stories.findOne({
    _id: storyID
  })

  if (!story)
    return;

  return story;
};
这里有一个故事模板的模板助手,从故事文档中获取故事

当像
story.title
这样的字段发生更改时,我希望模板重新加载。但是当像
story.viewingusers
这样的字段更改时,我不想重新提交模板。要让这一切发生吗


通过将发布功能设置为不发布这些字段,解决了触发该问题的特定问题。但是,该解决方案并不适用于所有用例,需要一个通用的解决方案。

您需要的是模板助手

在您的情况下,我要做的是将popover标记包装在一个常量块中,然后在
story.rendered
函数中手动更新该块中的内容

比如说:

story.html:

<template name="story">
    ...
    {{#constant}}
        <!-- Popover markup here -->
    {{/constant}}
    ...
</template>

还是正确的数据,对吗?有没有理由不希望模板多次呈现(除了优化之外?@TomColeman数据是正确的,但我有一个界面元素显示为popover。每次元素重新命名时,popover都会被销毁。这真是太令人讨厌了。这是一个选择,但是它破坏了流星风格的逻辑,增加了很多复杂性,所以我希望能更直接地解决这个问题。嗯,我不确定流星风格的逻辑,但我从流星的“聚会”例子中学习了这项技术。你应该看看这个例子,它围绕着逻辑包装了一个自动运行,所以更新逻辑也“在meteor样式中”无效。这迫使你使用
meteor.render
或者使用dom操作构建HTML。两者都不好。我查看了parties示例,这就是他们所做的。这很有效。但它会降低渲染速度,将模板代码放入javascript而不是模板中,并迫使您将模板分解为更多部分。这三件事都增加了复杂性,使事情难以维护。但我的意思是,这是一个很好的、很有帮助的答案,谢谢。我不同意缓慢的渲染,但它会打破视图代码中的逻辑分离。我真的不认为有什么办法可以避免这种情况,除非Meteor内置了一个标准的方法来处理这个特定的用例。{{{constant}}已经被弃用了,而且看起来已经不存在了。
Template.story.rendered = function(){
    //Update logic here
}