2015-06-17 34 views
0

我有這個流星佈局:如何在Meteor的變量中做頁面範圍的模擬?

<template name="layout"> 
    {{> toolbar }} 

    <div class="container"> 
     {{> yield}} 
    </div> 

</template> 




Router.configure({ 
    layoutTemplate: 'layout' 
}); 

我想有基於網頁工具欄參數顯示動態內容。我可以通過使用一些反應變量來做到這一點。但是,當同一客戶端同時打開多個頁面時會發生什麼?每個頁面的工具欄都應該顯示自己的內容,彼此獨立。我如何實現它?

+0

類似'Template.layout.helpers({toolbar:function(){return'some value'}})'? – juanpastas

+0

你可以用你想要的任何東西來替換「某個值」。 – juanpastas

+0

如何從另一個模板(通過{{yield}}調用該模板)訪問此助手? – Ruby

回答

1

如果您計劃在同一個頁面中使用中幾個模板反應數據,我勸你聲明的反應變量(ReactiveVar())或reactive dictionary

在你的js文件的開頭(如果你有幾個,使用父模板文件),在任何template.yourTemplate.renderedtemplate.yourTemplate.rendered之外,您聲明它。範圍將覆蓋頁面內調用的所有模板。

與活性字典的例子:

var pageSession = new ReactiveDict(); 

在你的主模板rendered功能,您可以設置您的反應變量:

pageSession.set("yourVariable", yourValue); 

並設置一個輔助返回它:

Template.layout.helpers({ 
    toolbar: function(){ 
     return pageSession.get("yourVariable"); 
    } 
})