2016-06-21 3 views
1

Я хочу поделиться некоторыми данными из шаблона с другим шаблоном, используя Meteor. У меня есть шаблон i.e allInventory.html, на котором я показываю некоторые данные в форме таблицы, я добавил три ссылки, которые есть. один для просмотра, редактирования и удаления, что я хочу, чтобы iam получал все данные из backend в один из хелперов, т.е. productDetails, и я связываю событие с кнопкой просмотра, которое будет принимать данные текущего пользователя, нажав на какой продукт, чтобы я успешно получал данные на моем шаблоне allinventory, но есть еще один шаблон, то есть productDetails, на котором я хочу отображать или показывать эти данные. Но застрял в том, что у меня есть данные по событию allInventory click, но не знаю, как сделать то же самое с шаблоном productDetails.Как отправить некоторые данные одного шаблона в другой шаблон Meteor

Вот мои 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 данные шаблона с шаблоном productsDetails.

Любая помощь будет подтверждена! Thanks

ответ

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, гарантируя, что изменение шаблона1 в родительском шаблоне также видно в шаблоне2.

Чтобы получить доступ к родительскому шаблону для детей, вы можете сделать что-то вдоль этих линий:

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; 
} 
}; 
Смежные вопросы