首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >handlebars动态部分名称

handlebars动态部分名称
EN

Stack Overflow用户
提问于 2016-02-09 22:05:28
回答 1查看 1.7K关注 0票数 1

我在我的示例中有一个组件,一个accordion,我想在它的content-area中用不同的模板重用它。

我所做的就是创作手风琴。

代码语言:javascript
复制
<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>

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

代码语言:javascript
复制
{{> accordion template=list data=about.services}} 

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

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

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

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

格雷果

EN

回答 1

Stack Overflow用户

发布于 2016-02-10 21:41:09

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

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

代码语言:javascript
复制
//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>
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35294072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档