2012-12-07 125 views
4

我剛從流星來自Apache-Wicket可重用組件,專注於webapp開發。流星模板狀態與全局會話

作爲理解模板中使用的數據是否不是mongodb文檔,該會話必須用於存儲狀態信息,例如,下拉選擇。但會話是全局的,如果一個模板被使用了兩次或多次,那麼固定會話屬性'mySelection'將不起作用,因爲所有的模板實例都會共享/覆蓋相同的會話值。 Apache Wicket解決方案是使用完全限定的模板路徑爲屬性添加前綴併爲每個模板實例維護一個唯一的會話屬性。

是否有一個通用的內置解決方案來維護流星中的「模板實例狀態」? 如果沒有,也許模板實例本身可以通過模板函數以某種方式訪問​​?

回答

-1

模板實例本身可通過這個訪問。

參見Templates Instances

+1

但只有在創建,渲染,銷燬。有沒有辦法在其他模板功能中訪問它? Template.abc.data = function(){return this.mydata}。 –

1

我會這樣做的方式與您描述的Apache Wicket解決方案類似,只不過我會編寫自己的代碼來管理它。你可以明顯摘要進一步

Template.myList.selection = function() { 
    return getTemplateSession("myList"); 
} 

Template.myOtherList.selection = function() { 
    return getTemplateSession("myOtherList"); 
} 

:因此,例如,管理Session對象與每個模板匹配的鑰匙:

function setTemplateSession(key, value) { 
    Session.set("template_" + key, value); 
} 
function getTemplateSession(key) { 
    Session.get("template_" + key); 
} 

在模板的方法。如果Meteor默認提供這種行爲會很好,或許你可以不用Meteor來做這件事,那麼你可以編寫一個智能包,將Apache Wicket的哲學貢獻給Meteor的模板系統?