2013-07-31 31 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