2015-06-22 98 views
0

我试图在每次提交或删除单词时重新呈现列中单词的集合。当单词被删除时它重新呈现,但当单词被提交时不会重新呈现。流星反应变量:得到了我的反应计算+反应性来源,但没有反应

这里是我的模板:

<template name = "wordColumn"> 
    {{#each words}} 
    <button class = "label label-default" draggable="true"> 
    {{word}} 
    </button> 
    {{/each}} 
</template> 

这里是我的助手:

Template.wordColumn.helpers ({ 
    words: function() { 
     var words; 
     var wordIds = Session.get ("wordIds"); 
     words = Words.find({ '_id': { $in: wordIds } }, { sort: { createdAt: -1 } }); 
     return words; 
    }, 
}) 

这里是文字模板事件内提交代码。当我做Words.find(),很明显,基础数据库已更改,因此Words.find()以上应无功和自动更新,列:

"submit .new-word": function (e) { 
    var text = e.target.word.value; 
    Meteor.call ("addWord" , text, function (err, data) { 
     Session.set ("displayInMainBox", Words.find(data).fetch()[0]); 
    }); 
    e.target.word.value = ""; 
    return false; 
} 

但没有雪茄 - 我只是没有按提交的词除非我刷新页面,否则不会自动显示。

你可以在这里查看已部署的应用程序:contextual.meteor.com,并提交一个新单词。它会显示在主框中,而不是右侧所有单词的列表。

回答

1

您需要在该回调的某个位置有一个Session.set("wordIds"...。如果这不改变,你的助手中的光标不会改变。由于您当前的光标包含所有当前的文档,因此当您删除某些内容时,它会作出反应。

PS,尝试彻底废除会话var。如果可能的话,处理订阅中的逻辑(或者从应用程序的外观来看,全部是这样)。

+0

哦对。我喜欢你对我的西班牙语词汇表的贡献,ftw。 –

+0

哈哈哈我不好,一直住在墨西哥太久了:-X –