流星反应变量:得到我的反应计算+反应源,但没有反应

时间:2015-06-22 01:55:53

标签: meteor

每次提交或删除单词时,我都会尝试重新呈现列中的单词集合。它会在删除单词时重新呈现,但在提交单词时不会重新呈现。

这是我的模板:

<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 个答案:

答案 0 :(得分:1)

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

PS,尝试一起取消会话var。如果可能,处理订阅中的逻辑(或者从应用程序的外观中解决所有逻辑)。