如何从handelbars模板中选择元素?

时间:2016-08-09 10:16:27

标签: javascript jquery templates dom handlebars.js

我们的网页上有一个div:

<div id="person-details">
    <div></div>
    ...
</div>

我们使用以下jQuery代码从此div中选择相关元素:

var person = $("#person-details");
var children = release.find("div");
var fullname = children.first();

我们使用渲染函数执行ajax请求以获取我们存储在外部文件中的把手模板:

function _render() {
    var templateScript;
    template.getTemplate(filename).done(function(template) {
        templateScript = Handlebars.compile(template);
        fullname.html(templateScript(context));
    });
}

模板如下所示:

<div>
    <div>
        <p>{{name}}</p>
    </div>
    <div>
        <p>{{value}}</p>
    </div>
</div>

调用渲染函数后,我们要从模板中选择任何元素。例如,我们尝试过使用:

fullname.children('div');

但由于内容是动态生成的,我们无法从DOM中获取节点。

甚至可以从生成的车把模板中选择这样的元素吗?

1 个答案:

答案 0 :(得分:2)

感谢@DanielShillcock强调render()是异步的。这是一个解决方案:

function _render() {
    var templateScript;
    template.getTemplate(filename).done(function(template) {
        templateScript = Handlebars.compile(template);
        selector.html(templateScript(attribute));
        value = selector.find("div");
    });
}