Визуализировать встроенный частичный шаблон из предварительно скомпилированного шаблона с помощью руля?
У меня есть предварительно скомпилированный шаблон руля, который отображает как ожидалось.
Я решил добавить встроенную (не предварительно скомпилированную) частичную ссылку на шаблон, который я предварительно компилирую, но содержимое частичного не отображается должным образом.
Конечным результатом является то, что содержимое встроенной части включается в визуализированный HTML (я полагаю, что моя часть "частично" работает:-D), но:
- название частичного также включено в каждую строку
- выражение в частичном не заполнено моими данными
Это HTML-код, который отображается. 3 строки из названного частичного templateBodyItemNumberPartial
перечислены ниже (частичное имя, кажется, имеет префикс к каждой строке вывода), и данные не отображаются в <span>
:
<div class="templateBodyItem">
templateBodyItemNumberPartial
templateBodyItemNumberPartial <span class="templateBodyItemNumber"></span>
templateBodyItemNumberPartial
this is my body text
<div class="templateBodyItemFooter">this is my footer text</div>
</div>
Это основной предварительно скомпилированный шаблон, который ссылается на templateBodyItemNumberPartial
частичный:
{{! templates/nameWithPartial.handlebars }}
{{! precompiled via: handlebars ./templates/nameWithPartial.handlebars -f external_template_with_partial.js }}
<div class="templateBodyItem">
{{> templateBodyItemNumberPartial }}
{{ templateBodyItem }}
<div class="templateBodyItemFooter">{{ templateBodyFooter }}</div>
</div>
Это файл.html, в котором я определяю / регистрирую частичное и вызываю мой предварительно скомпилированный nameWithPartial
шаблон:
<script type="text/javascript" src="./handlebars-v2.0.0-alpha.4.js"></script>
<script type="text/javascript" src="./external_template_with_partial.js"></script>
<script id="templateBodyItemNumberPartial" type="text/x-handlebars-template">
<span class="templateBodyItemNumber">{{ templateBodyItemNumber }}</span>
</script>
var templateBodyObject = {
templateBodyItemNumber : 4 ,
templateBodyItem : 'this is my body text' ,
templateBodyFooter : 'this is my footer text'
};
// verify that the partial html is what I think it should be
console.log( $( '#templateBodyItemNumberPartial' ).html() );
//=> <span class="templateBodyItemNumber">{{ templateBodyItemNumber }}</span>
Handlebars.registerPartial( 'templateBodyItemNumberPartial' , $( '#templateBodyItemNumberPartial' ).html() );
var templateHtml = Handlebars.templates.nameWithPartial( templateBodyObject );
Я пытаюсь использовать встроенный партиал только для того, чтобы проверить, как партиалы работают в руле.
Может ли кто-нибудь подтвердить, поддерживается ли эта функция ИЛИ нужно ли использовать предварительно скомпилированные партиалы, если мой основной шаблон, который ссылается на партиал, предварительно скомпилирован?
Большое спасибо!
Кстати, я использую Win7 Pro 64-bit, но, надеюсь, это не проблема...
1 ответ
Эта проблема, кажется, решена путем отката руля до @1.3.0.
Я изменил одну строку кода выше из:
<script type="text/javascript" src="./handlebars-v2.0.0-alpha.4.js"></script>
чтобы:
<script type="text/javascript" src="./handlebars-v1.3.0.js"></script>
Затем я откатил CLI руля до @1.3.0:
$ npm install -g handlebars@1.3.0
и перекомпилировал внешний шаблон:
$ handlebars ./templates/name_with_partial.handlebars -f external_template_with_partial.js
Я предполагаю, что есть либо проблема с частичными данными и @v2.0.0-alpha.4, либо функциональность частичных возможностей в этой последней версии изменилась. Я заслуживаю того, что получаю за использование чего-то с "альфа" в названии.:)
О, хорошо, спасибо за прослушивание.