2016-06-21 55 views
1

我想使用流星將一些數據從模板分享到另一個模板。我有一個模板,即allInventory.html我在其中顯示錶格中的一些數據我添加三個鏈接那裏。一個用於查看,編輯和刪除我想要的iam從後端獲取所有數據到helper之一即productDetails中,然後我將一個事件與視圖按鈕綁定,該按鈕將獲取當前用戶點擊哪個產品的數據,以便我成功獲取數據在我的所有庫存模板中,但還有另一個模板,即我想要呈現或顯示該數據的productDetails。但卡住了,我有allInventory點擊事件的數據,但不知道如何與productDetails模板的ishare相同。如何將一個模板的一些數據發送到另一個模板流星

這裏是我的allInventory.js

Template.allInventory.rendered = function() { 
Template.allInventory.events({ 
     "click .btn":function (e){ 
     data = $(e.target).attr('data'); 
    Router.go('productDetail', {data: $(e.target).attr('data')}, {query: 'q=s', hash: 'hashFrag'}); 
    console.log("button clicked.."+data); 
    console.log(data); 

    } 
}) 

ProductDetails.js

Template.productDetail.rendered = function() { 
Template.productDetail.helpers({ 

productDetails: function() { 
     return data; 
} 
    }); 

allInvenrtory.html

<button type="button" data ="{{productInfo}}" class="btn btn-info btn-sm"><i class="fa fa-eye"></i>View</button> 

我只是單純的想與大家分享產品詳細模板allInventory模板數據。

任何幫助將appriciated! 謝謝

回答

0

我建議你避免會話用於此目的,因爲它是一個全局對象,但更重要的是,因爲有更好的方法來做到這一點。

可以使用助手從傳遞到子模板父模板數據:https://guide.meteor.com/blaze.html#passing-template-content

您可以使用回調https://guide.meteor.com/blaze.html#pass-callbacks

從孩子傳遞數據給父模板,我會結構本應用有一個容器(頁面)模板,它將擁有所有訂閱並根據URL呈現您的一個模板。

0

我會把這兩個模板放在第三個父模板中。

ParentTemplate 
    -SharedInfo 
    -KidTemplate1 
    -KidTemplate2 

然後讓第三個模板保存您想要跨模板共享的信息。

爲此,您可以使用ReactiveVar,確保父模板上template1代碼的更改也在template2中可見。

來訪問父模板的孩子,你可以沿着這些線路做一些事情:

Blaze.TemplateInstance.prototype.parentTemplate = function (levels) { 
var view = Blaze.currentView; 
if (typeof levels === "undefined") { 
    levels = 1; 
} 
while (view) { 
    if (view.name.substring(0, 9) === "Template." && !(levels--)) { 
     return view.templateInstance(); 
    } 
    view = view.parentView; 
} 
}; 
相關問題