Визуализировать встроенный частичный шаблон из предварительно скомпилированного шаблона с помощью руля?

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

Я решил добавить встроенную (не предварительно скомпилированную) частичную ссылку на шаблон, который я предварительно компилирую, но содержимое частичного не отображается должным образом.

Конечным результатом является то, что содержимое встроенной части включается в визуализированный HTML (я полагаю, что моя часть "частично" работает:-D), но:

  1. название частичного также включено в каждую строку
  2. выражение в частичном не заполнено моими данными

Это 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, либо функциональность частичных возможностей в этой последней версии изменилась. Я заслуживаю того, что получаю за использование чего-то с "альфа" в названии.:)

О, хорошо, спасибо за прослушивание.

Другие вопросы по тегам