0

我需要用HandleBars和 json 创建一个表。我的建议是这样的:

<script type="text/x-handlebars">
 {{NGRID 'json'}}
</script> 

和注册助手NGRID是这样的:

Handlebars.registerHelper('NGRID',function(json){

    // create elements <table> and a <tbody>
    var tbl     = document.createElement("table");
    var tblBody = document.createElement("tbody");

    // cells creation
    for (var j = 0; j <= 2; j++) {
        // table row creation
        var row = document.createElement("tr");

        for (var i = 0; i < 2; i++) {
            // create element <td> and text node 
            //Make text node the contents of <td> element
            // put <td> at end of the table row
         var cell = document.createElement("td");    
              var cellText = document.createTextNode("cell is row "+j+", column "+i); 

            cell.appendChild(cellText);
            row.appendChild(cell);
        }

        //row added to end of table body
        tblBody.appendChild(row);
    }

    // append the <tbody> inside the <table>
    tbl.appendChild(tblBody);
    // put <table> in the <body>
    // tbl border attribute to 
    tbl.setAttribute("border", "2");

    return tbl;
});

但在我的 html 文件中,结果是这样的:

[object HTMLTableElement]

但我想看桌子。

4

1 回答 1

3

Handlebars 使用toString来自返回对象的 ,因为您会收到[object HTMLTableElement].

此外,handlebars 会转义返回的字符串,以防止 XSS 攻击。您需要Handlebars.SafeString在您信任的内容中使用您的 html 不要被转义。

为简单起见,我回来new Handlebars.SafeString(tbl.outerHTML)工作。

http://jsfiddle.net/Y2RWh/

于 2013-11-11T12:28:49.520 回答