0

我很想知道 Meteor 是否适合跟随,以及我将如何编写代码。

我想创建一个网页,通过特定“div”中的代码可以即时将其热交换给当前正在查看该页面的用户。(例如,div 包含一些文本,但随后用图像替换它。)理想情况下,交换将由网页管理员通过单击按钮手动执行,或者在服务器上触发一些代码或其他东西。网页的普通浏览者无法做到这一点——他们只能看到页面上的实时变化。

现实生活中的例子:

互联网直播已停播,因此“div”包含“off-air”文本。直播时会发生代码的实时热交换,网页的查看者现在会在“div”中看到 html5 广播播放器。稍后,一旦广播停播,它就会被交换回来。

我对 Meteor 平台完全陌生,所以我认为自己是新手 :) 任何帮助表示赞赏。

4

1 回答 1

0

您可能会更好地使用使用来自集合的数据的反应式 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。它实际上比刷新用户页面的热代码交换要好得多

于 2013-04-07T12:12:18.417 回答