您可能会更好地使用使用来自集合的数据的反应式 div(我将使用原始 HTML 的示例,但您最好使用要显示的内容来实现自己的功能:即
基本上利用热代码交换的反应性
客户端html代码
<template name="home">
<div>
{{{content}}}
</div>
</template>
js代码
if(Meteor.isClient) {
MyCollection = new Meteor.Collection("MyCollection")
Template.home.content = function() {
if(MyCollection.findOne()) {
return MyCollection.findOne().content
}
}
}
if(Meteor.isServer) {
MyCollection = new Meteor.Collection("MyCollection")
//Set an initial content if there is nothing in the database
Meteor.startup(function() {
if(!MyCollection.findOne()) {
MyCollection.insert({content:"<h1>Test content</h1><p>Test Data</p>"
}
}
//A method to update the content when you want to
Meteor.methods({
'updatecontent':function(newcontent) {
id = MyCollection.findOne()._id
MyCollection.update(id, {$set:{content:newcontent}});
return "Done"
}
}
您可以在 mongo 集合中或使用类似(在您的 Web 控制台、客户端或服务器端 javascript 中)更新您的内容:
Meteor.call("updatecontent","New content",function(err,result) {
if(!err) {
console.log(result)
}
});
当您使用它时,它将实时更新代码。
对不起,它很长,但大部分是设置/更新 html。它实际上比刷新用户页面的热代码交换要好得多