3

我在 Meteor 应用程序中显示了一组“消息”。当我的模板“消息”被渲染时,我应用了这个名为“gridalicious”的 jQuery 插件,它基本上以类似 pinterest 的格式显示消息。

一切正常,但是当我插入新消息时,该新消息会显示两次。当我刷新浏览器时,副本消失了。

我正在应用插件如下

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

基本上,如果我摆脱这个插件,事情消息会正确显示,没有任何重复。

我不确定是什么导致了这个问题。

4

3 回答 3

1

是的,我有类似的概率。对于这个插件或相同的情况,为了避免它重复你的模板实例,你可以尝试创建一个全局变量来处理你的消息框状态,添加一些条件来确定这个新消息的 id 是否已经在你的全局状态处理程序中并且已经被渲染, 然后不要渲染它两次。

全局范围

isAlreadyBeenReneredId = null

消息的模板实例

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

不是真正的代码,而是您可能想尝试的一些想法。

于 2012-11-12T14:00:43.273 回答
0

据我所知,Meteor 不会一次又一次地渲染所有东西,而只会渲染差异。所以我认为问题在于,您在同一个元素上多次调用 jQuery 插件。

我不知道插件,但似乎有一种append方法,也许这可能有用?

于 2012-11-13T13:21:40.707 回答
0

试试这个:

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

抱歉,我不知道如何在 coffescript 中编写等效项。

于 2013-02-08T19:01:45.760 回答