流星,会话值和反应性

时间:2014-10-30 15:20:58

标签: session meteor

我记得在某处读到Meteor中关于Session变量的一个好处是,当你更改了Session变量时,你在Session.get中使用该变量的任何地方都会对新值做出反应。我有一个表单,如果用户取消添加新记录,我将该Session变量设置回集合中的最后一个文档,在我的情况下为#2,但表单保留在从未添加的新记录#3上。

这是我的基本形式;

<template name="transactions">
<form id="trx_form">
{{#each currentVal}}
  Trx No. <input type="text" value="{{trx_num}}" id="trx_num" readonly>
  Amount: <input type="text" value="{{trx_amount}}" id="trx_amount">
  <input type="submit" value="Save" id="save_trx">
  <input type="button" value="Cancel" id="cancel_trx">
{{/each}}
</form>
</template>

Session变量以单独的导航形式Session.set('trx_DB_currentID', trx_DB_currentID)

设置为集合中的最后一条记录

这是获取该文档的值的原因;

Template.transactions.currentVal = function() {
var currValues = {trx_num: '', trx_amount: '''};
var trxCursor = trx.find({"_id": Session.get('trx_DB_currentID')});
trxCursor.forEach( function(rec) {
    currValues.trx_num = trx.find({"userID": Meteor.userId()}).count(); 
    currValues.trx_amount = rec.trx_amount;
});
var array = [];
array[0] = currValues;
return array;
};

到目前为止,一切都运行良好。这是单击取消按钮的事件;

'click #cancel_trx': function(theEvent, theTemplate) {
// Change trx_DB_currentID to last record
var trxCursor = trx.find({"userID": Meteor.userId(), 'trx_num': trx.find({"userID": Meteor.userId()}).count()});
trxCursor.forEach( function(rec) {
    Session.set('trx_DB_currentID', rec._id);   
});
}

我可以在控制台中看到trx_DB_currentID确实设置为记录#2的id,但表单仍显示空白记录#3。如果我点击返回导航表单上的一条记录,则会显示记录#1。那么为什么我的表单不会对trx_DB_currentID设置为记录#2做出反应?

0 个答案:

没有答案