2014-01-11 114 views
1

之間有什麼區別:將數據添加到模板中不使用輔助功能

Session.set("sessionclickcount",1); 
    Template.hello.clickcount = Session.get("sessionclickcount"); 

Session.set("sessionclickcount",1); 
    Template.hello.clickcount = function() 
    { 
    return Session.get("sessionclickcount"); 
    }; 

我嘗試使用下面的代碼更新會話變量以後更新的模板數據:

Template.hello.events({ 
    'click input' : function() { 
     Session.set("sessionclickcount", 
     Session.get("sessionclickcount")+1); 
    } 
    }); 

第一種方法失敗,html不會更改。第二個成功。爲什麼?謝謝!

回答

1

流星的助手需要返回函數。這是因爲該函數在上下文中運行並允許流星跟蹤相關性。

這些依賴關係幫助流星知道模板需要重新繪製新數據。

如果您使用Template.hello.clickcount = Session.get("sessionclickcount");,則渲染引擎(spark)不會從此獲得任何依賴關係,這就是爲什麼它不會更改。它不知道它必須重畫它。

+0

當OP說「第一種方法失敗......」他的意思是,「價值不變」,而不是「沒有顯示任何東西」。在這種情況下,值「1」將始終顯示。 – alanning

+0

更改了它,謝謝。 – Akshat

2

流星中的助手可以是函數或常量值。

docs來自:

助手也可用於在恆定的數據通過。

//正常工作{{#each sections}} Template.report.sections = [「Situation」,「Complication」,「Resolution」];

在你的情況你的助手設置爲恆定值,1,因爲它是會議場在一次執行這條線的JavaScript值:

Template.hello.clickcount = Session.get("sessionclickcount");