2012-11-12 66 views
3

我在我的Meteor應用程序中顯示「消息」的集合。當我的模板「消息」呈現時,我應用這個名爲「gridalicious」的jQuery插件,它基本上以類似pinterest的格式顯示消息。流星模板應用jQuery插件後呈現

一切正常,但是當我插入新消息時,該新消息顯示兩次。當我刷新瀏覽器時,重複消失了。

我申請的插件作爲跟隨

Template.messages.rendered = -> 
    $("#message_box").gridalicious 
    width:250 
    animate:false 
    selector:".message" 
    gutter:0 

基本上,如果我擺脫這個插件,事情的消息正確顯示,沒有任何重複。

我不知道什麼會導致此問題。

回答

1

是的,我有這種類似的概率。對於這個插件或相同的評價,爲了避免它重複你的模板實例,你可以嘗試一個全局變量來處理你的消息框狀態,添加一些條件來決定這個新消息的ID是否已經在你的全局狀態處理器中並且已經被渲染,那麼不要渲染它兩次。

全球範圍

isAlreadyBeenReneredId = null 

消息

Template.messages.rendered = -> 
    if isAlreadyBeenReneredId isnt @data._id 
     isAlreadyBeenReneredId = @data._id 
     options = 
      width: 250 
      gutter: 0 
     $("#message_box").gridalicious options 

不是真正的代碼,但你可能會想嘗試一些想法的模板實例。

+0

謝謝,但這並不覺得這是一個合適的做法。你不這麼認爲嗎? – ericbae

+0

或者我們使用template.templateName.created? – crapthings

0

就我所知,流星並不是一次又一次渲染所有東西,而只是區別。所以我認爲問題是,你在同一個元素上多次調用jQuery插件。

我不知道插件,但似乎有一個append方法,也許這可能是有用的?

0

試試這個:

if (Meteor.isClient) { 
    Meteor.startup(function() { 
    $(document).ready(function(){ 
    $("#message_box").gridalicious({ 
     width:250, 
     animate:false, 
     selector:".message", 
     gutter:0 
    }); 
    }); 
    }); 
} 

對不起,我不知道如何寫在coffescript相當。