我有以下内容:
Meteor.startup(function() {
var computation = Tracker.autorun(function() {
var currentChapter;
currentChapter = Chapters.findOne({
_id: currentChapterId
});
if (currentChapter) {
if (currentChapter.title) {
$("#input-title").val(currentChapter.title);
} else {
$("#input-title").val("");
}
if (currentChapter.content) {
$("#input-content").html(currentChapter.content);
} else {
$("#input-content").html("");
}
}
return computation.stop();
});
});
现在我得到:
Tracker afterFlush函数的异常:无法调用方法'stop' 未定义的TypeError:无法调用未定义的方法'stop'
我想要做的是在currentChapter
为真时停止计算。我做错了什么?
答案 0 :(得分:4)
两件事:
1 - 您的自动运行功能获取传递给它的计算的句柄,因此您可以像这样停止它:
Meteor.startup(function() {
var computation = Tracker.autorun(function(thisComp) {
var currentChapter;
currentChapter = Chapters.findOne({
_id: currentChapterId
});
if (currentChapter) {
if (currentChapter.title) {
$("#input-title").val(currentChapter.title);
} else {
$("#input-title").val("");
}
if (currentChapter.content) {
$("#input-content").html(currentChapter.content);
} else {
$("#input-content").html("");
}
thisComp.stop();
}
});
});
2 - 在您的代码中,计算将在第一次运行结束时停止 - 无论您应该在if (currentChapter)
块内停止计算。