2013-06-20 4 views
1

Мое приложение отображает коллекцию элементов, и я хотел бы добавить представление детализации детализации.Как правильно создать шаблон Meteor Reactive?

Я смог получить только половину используемого решения; Я считаю, соответствующий документ и использовать этот документ, чтобы сделать шаблон:

var item = Items.findOne('my_id'); 

$('#main').html(
    Meteor.render(function() { 
     return Templates.item(item) 
    })); 

Это успешно делает отдельный элемент и соответствующие события связаны.

вот тр, шаблон не реактивный! Если я изменил свои данные с помощью связанных обработчиков событий или с консоли, шаблон не будет обновлен. Однако обновление страницы покажет обновленные данные.

Я - Метеор noobie, так что это, вероятно, что-то очень простое. Любая помощь будет принята с благодарностью.

+0

Может быть, у вас есть закрывающая закрывающая скобка? 'return Templates.item (item))' должен быть 'return Templates.item (item)' –

+0

Простите, это просто опечатка. Обновление вопроса сейчас. – pdoherty926

ответ

4

Мне кажется, что вы не используете шаблоны так, как они были на самом деле предназначены.

приложение метеора начинается с основным HTML-разметкой, которая может существовать только один раз в вашем приложении ..

<head> 
    <title>My New Fancy App</title> 
</head> 
<body> 
    {{>templateName}} 
</body> 

Затем добавьте шаблон ..

<template name="templateName"> 
    {{#each items}} 
    template or relevant html goes here.. 
    {{/each}} 
</template> 

Теперь вам нужен помощник шаблон чтобы дать вам данные для {{#each пунктов}} блок хелперов ..

Template.templateName.helpers({ 
    items: function(){ return Items.find({}) } 
}); 

Все это получает определенный по нац e client side.

Тогда вам понадобится коллекция, и коллекция должна быть определена как на клиенте, так и на сервере.

Items = new Meteor.Collection('items'); 

Это должно работать до тех пор, пока у вас есть записи в вашей коллекции.

Поскольку вы хотите только пожелать, чтобы сделать один документ, который вы можете изменить помощника и шаблон просто чуть-чуть ..

первый помощник становится:

Template.templateName.helpers({ 
    item: function(){ return Items.findOne() } 
}); 

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

<template name="templateName"> 
    {{item.propertyName}} 
</template> 
+0

Спасибо за ответ. Тем не менее, я ищу, чтобы сделать один элемент коллекции предметов. Разве это не согласуется с конвенциями Метеор? – pdoherty926

+1

Там вы, я обновил свой ответ, чтобы показать, как просто визуализировать один документ из коллекции в шаблон. Надеюсь это поможет. –