首页 > 解决方案 > 如何在客户端的部分内部引用 Handlebars 部分?

问题描述

背景

我有两个部分,“发布”和“主题”。帖子可以有很多主题,我正在尝试使用把手创建新帖子。帖子使用 each 循环来呈现每个主题。

{{#each subjects}}
    {{> subject}}
{{/each}}

主题看起来像这样:

<li class="post-subject">{{postSubject}}</li>

具体问题

当我传递这样的对象时,我收到错误找不到部分主题”:

// Subjects come in this form
let subs = [{"postSubject": "Avengers: Endgame"},
            {"postSubject": "Avengers: Infinity War"}];

let postObj = {
    postContent: "some_string",
    timestamp:   "some_string",
    subjects:    subs
};

到这个功能:

let newPost = Handlebars.templates.post(postObj);

老实说,我不确定为什么它找不到部分主题,因为我可以将完全相同的对象数组从我的服务器传递到客户端,并且它可以很好地呈现它们。当然,为主题传递 [] 就可以了。我所有的部分也都存储在同一个文件夹中。

我假设模板功能可以让客户找出“发布”部分的存储位置,而不是其他人可能在哪里,这就是为什么它无法找到部分的主题,但老实说我不知道​​。

如果我在某些地方含糊不清/没有提供足够的信息,请随时提出任何问题。先感谢您!

标签: javascripthandlebars.jspartials

解决方案


在摆弄了一会儿之后,我终于发现我需要使用以下方法注册主题部分:

Handlebars.registerPartial('subject', '<li class="post-subject">{{postSubject}}</li>');

我希望我可以在第二个元素中引用实际的部分,但我不确定如何。这虽然有效,但这就是我所需要的。


推荐阅读