2016-06-25 48 views
1

流星客戶端模板助手受益於會話反應性,以向瀏覽器提供正確的數據。
相同的模板有一個click事件,它修改了這個會話,因此期望在瀏覽器中進行一些更改,然後使用jQuery修改「新」顯示。等待模板自己的事件爲自己的助手更改會話

問題是,jQuery並沒有等到DOM準備好新顯示,因此上述會話反應並沒有完成它的魔力。

如何解決這個問題?由於

Template.checks.helpers({ 
    'values': function() { 
    return Session.get('someVar'); 
    } 
}); 

Template.checks.events({ 
     'click .checks-row': function(event) { 
     Session.set('someVar', newArray); 
     $('li').each(do things);) //<---- ops, the old list items still there 
     } 
     }); 
<template name="checks"> 
    {{#each values}} 
    <ul class="checks-row"> 
    <li>{{this.label}}</li> 
    </ul> 
    {{/each}} 
</template> 
+0

如果你實際需要使用jQuery(你正在初始化一個插件或其他東西),那麼對列表項使用一個單獨的模板。在該模板的'onRendered'回調函數中,執行jQuery的工作。 –

回答

0

如果可能的話,我建議從使用jQuery爲此制止。希望你不會需要它:

  1. 既然你設定的價值,你會知道他們是什麼,如果你需要閱讀它們。
  2. 如果它正在渲染,模板/ blaze代碼可能會改變。

展望從jQuery的路程有AA情侶好處:

  1. 你不必等待對DOM
  2. 從不一致的DOM國家保護(火焰不會意識到什麼的jQuery是在做)。

P.S. Getting away from Sessions is a good idea too