【问题标题】:handlebars dynamic partial names车把动态部分名称
【发布时间】:2016-02-10 21:41:08
【问题描述】:

在我的示例中有一个组件是手风琴,我想在它的内容区域内使用不同的模板重用它。

我所取得的成就是创造了手风琴。

<div class="c_accordion">
    {{#each data}}
    <div class="c_accordion__item">
        <h3 class="c_accordion__headline">{{this.title}}</h3>
        <div class="c_accordion__content">
            {{../template}} <-- renders [object object]
            {{> ('../template') data=this.content}}  <-- there i want to render diffrent templates
            {{> list data=this.content}}  <-- this works without problems
        </div>
    </div>
{{/each}}
</div>

现在我想在我的手风琴中渲染不同的模板(例如部分列表)

{{> accordion template=list data=about.services}} 

但我总是收到错误“警告:找不到使用的部分未定义”

我也尝试了帮助器查找,但结果相同,但出现错误。

一般来说这是正确的方法还是有其他方法可以解决这个问题?

我正在使用 grunt-assemble 来构建静态站点。这是把手版本 ## v4.0.5 - 2015 年 11 月 19 日

格雷戈

【问题讨论】:

    标签: dynamic handlebars.js partials


    【解决方案1】:

    好的,我找到了解决方案;)

    基于此 assemble - Render a list of strings as Handlebars partial

    //insert the accordion
    {{> accordion partial="list" data=about.services}}
    
    //accordion.hbs
    <div class="c_accordion">
         ...
         {{dynamicPartial ../partial this.content}}
         ...
    </div>
    
    //helper dynamicPartial
    module.exports.register = function (Handlebars, context)  { 
        Handlebars.registerHelper('dynamicPartial', function(name, data) {
            var partial = Handlebars.partials[name];
            var template = Handlebars.compile(partial);
            var output = template({"data": data});
            return new Handlebars.SafeString(output);
        })
    };
    
    //list.hbs
    <ul>
        {{#each data}}
        <li>{{this}}</li>
        {{/each}}
    </ul>
    

    【讨论】:

      猜你喜欢
      • 2013-11-14
      • 2013-06-01
      • 1970-01-01
      • 2014-03-10
      • 1970-01-01
      • 2016-06-09
      • 2015-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多