2013-07-31 30 views
1

我的应用程序中有两个Meteor.Collections。一个包含一组“滑块”对象,它们为每个滑块定义标题,最大值,最小值,基值和步长。现在,我有两个问题。首先是让滑块首先出现。我试图把下面的代码:如何让JQuery UI Slider更新流星汇集(MongoDB)不会消失

Sliders.find().forEach(function(slider) { 
     $("#"+slider._id).slider({ 
      min:slider.min, 
      max:slider.max, 
      value:slider.base, 
      step:slider.step, 
      change:function(event,ui) { 
       Data.update({_id:Data.findOne({slider:event.target.id})._id}, {$set:{value:ui.value}}); 
      } 
    }); 
    }); 
在Meteor.startup

,我client.js文件的末尾,在$(文件)。就绪()块,并且似乎没有得到它上班。但是,当我将它粘贴到JavaScript控制台时,它可以正常工作。无论如何,这是我的第一个问题。

我的第二个问题是,每当我滑动滑块,滑块消失。我可以继续拖动鼠标来改变它的值,但是一旦我放开了点击器,我就不能再改变它的值了。我尝试过使用上面的方法,并调用Meteor.method在服务器端进行更改。这是事实,我正在更新发布到同一个客户端,使滑块消失的集合。任何不足都不会导致它消失。我应该如何处理这个问题?

谢谢!

+0

尝试使用Template.rendered在您的模板呈现时运行上面的代码。这听起来像是当你用jQuery查找它们时,元素可能不在DOM中。 – user728291

+0

我不敢相信我没想到!谢谢! – efriis

回答

0

您是否已经尝试过使用Template.preserve方法? http://docs.meteor.com/#template_preserve

+0

想通了......基本上,我有一个模板,其左侧的滑块div和一个表格显示右侧的数据。因为它们都在同一个模板中,所以重新渲染出现了问题。我用{{#isolate}}包围了桌子,并修复了它!我会尝试保存的东西吧!谢谢! – efriis

+0

我没有尝试过,但现在我尝试在滑块周围使用#constant块。这也起作用了(由文档的该部分推荐)。它不能解决我初始化滑块的问题,尽管...仍然需要从JavaScript控制台执行此操作。即使把它放在我的js文件的最后,似乎也不起作用。有任何想法吗? – efriis