流星 - 实时代码更新到网页?

时间:2013-04-07 10:48:25

标签: meteor

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

我想创建一个网页,通过特定“div”中的代码,可以即时热切换到当前正在查看该页面的用户。 (例如,div包含一些文本,但随后图像会替换它。)理想情况下,交换将由网页管理员通过单击按钮手动执行,或者某些代码在服务器上触发。网页的常规查看者无法执行此操作 - 他们只能看到页面上的实时更改。

现实生活中的例子:

现场互联网广播是无线播放,因此“div”包含“无线”文字。当广播播出时,代码的实时热交换发生,并且网页的观众现在看到“div”中的html5广播播放器。之后,一旦广播播出,它就会被换回来。

我对Meteor平台完全不熟悉,所以我认为自己是新手:)感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

使用来自集合的数据使用反应div可能会更好(我将使用原始HTML的示例,但您可能最好使用要显示的内容来实现您自己的功能:ie

基本上利用reactivity而不是热门代码交换

客户端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。它实际上比热门代码交换更好,它会刷新用户的页面