Какие основные методы Meteor я могу вызвать для компиляции нового шаблона?

Я специально пытаюсь сделать это на стороне клиента, но это можно сделать только на стороне сервера. Я буду использовать Meteor.call для возврата скомпилированного шаблона в виде строки через DDP/Ajax.

Моя конечная цель — динамически создавать новые шаблоны (HTML, события, помощники и т. д.) во время выполнения. А потом иногда заменять существующие шаблоны обновленными.


person faceyspacey.com    schedule 14.07.2014    source источник
comment
вы пробовали UI.renderWithData(Template.foo, {bar: "baz"}) github.com/meteor/meteor/ вики/   -  person pahan    schedule 14.07.2014
comment
Мне нужно иметь возможность определять HTML-содержимое шаблона как строку, а не только данные. Как я могу создать совершенно новый шаблон с нуля, оценить и скомпилировать его во время выполнения?   -  person faceyspacey.com    schedule 14.07.2014
comment
UI.renderWithData возвращает строку, и я думаю, что она делает именно то, что вы хотите. Еще нужен пример?   -  person pahan    schedule 14.07.2014
comment
UI.renderWithData не возвращает строку. Он содержит активированный экземпляр шаблона, который необходимо вставить в DOM с помощью UI.insert или преобразовать в строку с помощью UI.toHTML. Кроме того, ОП запрашивает способ замены скомпилированного кода шаблона во время выполнения, что является совершенно другим вопросом.   -  person Andrew Mao    schedule 14.07.2014
comment
Эй, я пытаюсь сделать то же самое здесь: stackoverflow.com/questions/24807739/. Я нашел способ скомпилировать клиентскую часть, но потом застрял. Для renderWithData требуется компонент, а скомпилированный шаблон — это просто документ (или что-то в этом роде). Что нам нужно, чтобы сначала создать компонент, а затем я думаю, что UI.renderwithData и UI.insert должны выполнить эту работу.   -  person ndemoreau    schedule 18.07.2014


Ответы (1)


Компиляция шаблонов производится на сервере, см.

https://github.com/meteor/meteor/tree/devel/packages/spacebars-compiler

Я не думаю, что вы захотите делать это на клиенте, потому что тогда каждый клиент может иметь разные локальные шаблоны и отображать вещи по-разному. Вам все равно придется отправлять шаблоны на сервер, чтобы другие клиенты также могли их обновить. То же самое для помощников и т. д.

Вы уверены, что этого нельзя добиться, определив некоторые шаблоны, которые могут использоваться клиентами, а затем обновив контекст данных? Кажется, вы пытаетесь создать для клиентов способ создания новых шаблонов для приложения, но вы можете добиться этого, имея какие-то структурированные данные, которые объединяют существующие шаблоны для создания пользовательских представлений.

person Andrew Mao    schedule 14.07.2014