Meteor 设置{reactive:false}会导致{{#each}中断吗?
我不确定我是否误解了某些东西应该是如何工作的,但每当我将reactive设置为false时,它似乎会打断我模板中的{{{each}}循环 我可以通过创建一个新的meteor应用程序,保持autopublish等的完整性,然后使用以下代码,通过一个简单的示例重新创建该问题: .js文件:Meteor 设置{reactive:false}会导致{{#each}中断吗?,meteor,Meteor,我不确定我是否误解了某些东西应该是如何工作的,但每当我将reactive设置为false时,它似乎会打断我模板中的{{{each}}循环 我可以通过创建一个新的meteor应用程序,保持autopublish等的完整性,然后使用以下代码,通过一个简单的示例重新创建该问题: .js文件: Numbers = new Mongo.Collection('numbers'); if (Meteor.isClient) { Template.hello.helpers({ number:
Numbers = new Mongo.Collection('numbers');
if (Meteor.isClient) {
Template.hello.helpers({
number: function() {
return Numbers.find({},{reactive:false});
}
});
}
if (Meteor.isServer) {
Meteor.startup(function () {
if (Numbers.find().count() === 0) {
for (var i = 0; i < 100; i++)
Numbers.insert({number: i});
}
});
}
Numbers=newmongo.Collection('Numbers');
if(Meteor.isClient){
Template.hello.helpers({
编号:函数(){
返回数字。查找({},{reactive:false});
}
});
}
if(Meteor.isServer){
Meteor.startup(函数(){
if(Numbers.find().count()==0){
对于(变量i=0;i<100;i++)
插入({number:i});
}
});
}
.html文件
<head>
</head>
<body>
{{>hello}}
</body>
<template name="hello">
{{#each number}}
{{this.number}}
{{/each}}
</template>
{{>你好}
{{#每个数字}
{{this.number}}
{{/每个}}
在上面的例子中,没有打印任何内容。如果我删除{reactive:false},那么数字将按预期打印。您的代码无法工作;这不是
{reactive:false}
的目的。这对订阅是有意义的
这里发生的是以下步骤:
- 应用程序启动
- 模板被呈现并转到
,它不会返回任何内容,因为它尚未从服务器接收到任何内容Numbers helpers
- 而且。。。就这样
- 应用程序启动
- 模板被呈现并转到
,它不会返回任何内容,因为它尚未从服务器接收到任何内容Numbers helpers
- 因为您没有添加
选项,所以每次从服务器接收到内容时,都会重放计算并更新模板{reactive:false}
if (Meteor.isClient) {
Meteor.subscribe('numbers');
Template.hello.helpers({
number: function() {
var n = Numbers.find().fetch();
return Numbers.find({},{reactive:false}).fetch();
}
});
}
由于var n=Numbers.find().fetch()当Numbers.find()光标更改时,将触发代码>
但这没有多大意义。告诉我你想要实现什么
(我敢打赌,你真正想做的是:Meteor.subscribe('numbers',{reactive:false});
并让助手做出反应
我给你做了一个快速的流星垫来玩它:谢谢fabien,这解释了为什么什么都没有出现。我想,{reactive:false}只是.find()上的一个选项,我看不到任何关于订阅的引用?我的最终目标是,我有一个按投票顺序排列的列表。我不想更改顺序,也不想在手动刷新页面之前添加/删除列表中的项目。因此,你必须使订阅非反应性,杀死它,并在页面重新加载时重新制作。嘿@fabien,你怎么做我们这样做“使订阅无反应,杀死它,并在页面重新加载时重新创建”