2013-05-08 63 views
0

我構建了一個在移動設備上呈現主題列表的響應式論壇演示。收集更新時,它沒有反應。我認爲原因是緩慢的查詢。在minimongo中查詢性能

我測試的HTML:

<template name="index"> 
    <h1 id="myTime"></h1> 
    {{#each foo}} 
    <h1>{{name}}</h1> 
    {{/each}} 
    <input id="t" type="text"></input> 
    <button id="s">submit</button> 
</template> 

和JS:

Template.index.foo = function() { 
    return Foo.find({}).fetch(); 
}; 

Template.index.events({ 
    "click #s": function() { 
    Foo.insert({name: $("#t").val()}); 
    } 
}); 

Meteor.startup(function() { 
    Meteor.setInterval(function() { 
    $("#myTime").text((new Date()).getTime()); 
    }, 1); 
}); 

當文件的數量非常少,代碼工作非常快。當文件數量大於300時,渲染將停止約3秒

是否有可能改進它? :)

回答

0

你在循環的每一次迭代中做DOM插入嗎?創建一個document fragment會更容易,將所有內容都追加到該內容中,然後在循環結束時將該片段追加到DOM中。 邏輯保持幾乎相同,但瀏覽器不得不在最後重新繪製頁面一次,而不是每次迭代。

+0

謝謝!我沒有DOM操作代碼。所有DOM操作都由模板處理。延遲在'Template.index.rendered'之​​前(我在渲染函數中添加了一個'alert',並在延遲之後提醒) – QingYun 2013-05-08 16:11:27