如何将一个模板的一些数据发送到另一个模板Meteor

时间:2016-06-21 07:22:15

标签: node.js templates meteor meteor-blaze

我想使用Meteor将模板中的一些数据共享到另一个模板。我有一个模板,即allInventory.html,我在表格中显示了一些数据,我添加了三个链接。一个用于查看,编辑和删除我想要的东西iam从后端获取所有数据到帮助者之一即productDetails并且我用视图按钮绑定一个事件,该视图按钮将点击当前用户的数据点击哪个产品,这样我就能成功获取数据在我的allinventory模板,但有另一个模板,即productDetails,我想在其上呈现或显示该数据。但坚持认为我有关于allInventory点击事件的数据,但不知道如何与productDetails模板共享相同的内容。

这是我的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>

我只是想与productsDetails模板共享allInventory模板数据。

任何帮助都会得到满足! 感谢

3 个答案:

答案 0 :(得分:1)

我建议为此目的避免使用Session,因为它是一个全局对象,但更重要的是,因为有更好的方法可以做到这一点。

您可以使用帮助程序将数据从父模板传递到子模板:https://guide.meteor.com/blaze.html#passing-template-content

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

将数据从子项传递到父模板

我将此应用程序构建为具有容器(页面)模板,该模板将包含所有订阅并根据URL呈现您的一个模板。

答案 1 :(得分:0)

如果要在模板之间共享数据,可以使用Session变量。

您可以按照以下指南操作:

http://meteortips.com/first-meteor-tutorial/sessions/

答案 2 :(得分: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;
}
};