Javascript 集合更新时重新呈现页面
我正在制作一个简单的多用户播放列表应用程序。我有一个客户端正在观看视频流,而在另一个客户端,我正试图将视频添加到该播放列表中。视频将正确添加到播放列表中,但当更新发生时,页面将重新呈现,视频将在正在观看的客户端上重新启动。我正在尝试获得它,以便当其他用户将视频添加到播放列表时,它可以继续为所有观看它的人播放Javascript 集合更新时重新呈现页面,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,我正在制作一个简单的多用户播放列表应用程序。我有一个客户端正在观看视频流,而在另一个客户端,我正试图将视频添加到该播放列表中。视频将正确添加到播放列表中,但当更新发生时,页面将重新呈现,视频将在正在观看的客户端上重新启动。我正在尝试获得它,以便当其他用户将视频添加到播放列表时,它可以继续为所有观看它的人播放 {{#constant}} {{#each ...}} .... {{/each}} {{/constant}} 在服务器上,我有: Meteor.publis
在服务器上,我有:{{#constant}} {{#each ...}} .... {{/each}} {{/constant}}
在客户端上,我将其设置为todo示例:Meteor.publish('videosQue', function (room_id) { return Videos.find({room_id: room_id}); });
下面是一些适用于一个人在房间里的代码:var videosHandle = null; Deps.autorun(function(){ var room_id = Session.get('room_id'); if (room_id) videosHandle = Meteor.subscribe('videosQue', room_id); else videosHandle = null; });
Template.EnteredRoom.loading = function () { return videosHandle && !videosHandle.ready(); }; Template.EnteredRoom.room = function () { return Rooms.findOne(Session.get('room_id')); }; Template.EnteredRoom.video_objs = function () { Session.set('videos', Videos.findOne({room_id: Session.get('room_id')})) return Session.get('videos'); }; Template.EnteredRoom.rendered = function () { if (Session.get('videos') && Session.get('videos').videoIds.length) { var currVid = 0, playlist = Session.get('videos').videoIds; renderVid(playlist, currVid); }; }; var renderVid = function(playlist, currVid) { var video = Popcorn.youtube('#youtube-video', 'http://www.youtube.com/embed/' + playlist[currVid] + '&autoplay=1'); video.on("ended", function() { if (++currVid < playlist.length) renderVid(playlist, currVid); else { $('#youtube-video').hide(); $('#video-container').append('<div style="font-size:30px;color:white;">No Videos :( Try adding one!</div>'); } }); }
有什么办法可以完成这件事吗 谢谢你的帮助 安德鲁 编辑:Template.EnteredRoom.load=函数(){ 返回videosHandle&!videosHandle.ready(); }; Template.EnteredRoom.room=函数(){ 返回房间.findOne(Session.get('room_id')); }; Template.EnteredRoom.video_objs=函数(){ Session.set('videos',videos.findOne({room\u id:Session.get('room\u id')})) 返回会话。获取(“视频”); }; Template.EnteredRoom.rendered=函数(){ if(Session.get('videos')&&Session.get('videos').videoIds.length){ var currVid=0,playlist=Session.get('videos').videoid; renderVid(播放列表,currVid); }; }; var renderVid=函数(播放列表,currVid){ var video=Popcorn.youtube(“#youtube video”,”http://www.youtube.com/embed/“+播放列表[currVid]+”&autoplay=1’; video.on(“结束”,函数(){ 如果(++currVid
在读了一些书之后,我想我应该以某种方式使用隔离来实现这一点,有什么建议吗?我想你可以试着把你不需要的部分放在{{常数}}块中。 我更喜欢在模型函数中使用{reactive:false}选项禁用reactive from collection: 返回集合。查找({},{reactive:false})} return collection.find({}, {reactive:false}) }