В шаблоне текстового плагина Require.js, как мне предоставить методы javascript?
Я использую Require.js и текстовый плагин. Я пытаюсь создать шаблон, который имеет что-то вроде этого:
<%= somefunction(displayvalue) %>
Мне нужно, чтобы somefunction (...) была доступна для нескольких шаблонов. Как лучше всего обернуть функцию для использования в нескольких местах? Я думал о том, чтобы сделать его модулем, но я не знаю, как передать его в шаблон.
1 ответ
После того, как вы скомпилируете шаблон, вы обнаружите, что вызываете функцию, и передаете некоторые аргументы. Так что просто передайте свою функцию в качестве аргумента:
var tpl = _.template( tplString );
tpl({ someFunction: function( val ) { /* do something */ } });
Хотя, я думаю, вам, вероятно, лучше, если вы передадите значение только внутри данных вашего шаблона. Шаблон на самом деле легче отлаживать и поддерживать, если он почти не требует логики. Так что вместо этого я бы пошел так:
tpl({ someValue: someFunction( aValue ) });
В другом движке шаблонов javascript (например, Handlebars) вы можете зарегистрировать вспомогательные функции, которые будут в основном доступны в глобальном масштабе для выполнения действий с данными вашего шаблона. Если вам действительно нужно использовать одну и ту же функцию внутри нескольких шаблонов, я бы подумал о переключении шаблонизатора. Подчеркивание обеспечивает механизм микротекстурирования, и поэтому как-то ограничено функциями помощников - хотя и может содержать слишком много логики...
На мой взгляд, шаблон подчеркивания хорошо работает для небольшого проекта и должен использоваться осторожно. Держите их как можно проще: if/else
, печать данных, и это должно быть. Если вам нужно больше, перейдите на более полный шаблонный движок.
Но даже там всю логику, которую вы делаете внутри шаблона, сложно отладить.
Так! Будь проще.