Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于生成列表的helper方法_Javascript_Templates_Handlebars.js - Fatal编程技术网

Javascript 用于生成列表的helper方法

Javascript 用于生成列表的helper方法,javascript,templates,handlebars.js,Javascript,Templates,Handlebars.js,我正在尝试实现一个Handlebar助手,它将接收一些数据,并基于这些数据生成一个列表。在helper方法中生成列表之后,我想循环这个列表。在示例中,这一点很清楚 场景是:我有一些数据,当我解析这些数据时,我想为这些数据中的不一致性创建一些自定义警告。负责从原始JSON数据生成警告的方法称为generateWarnings() 我有编译模板和呈现数据的函数,定义如下: function compileTemplate(targetId) { return Handlebars.compi

我正在尝试实现一个Handlebar助手,它将接收一些数据,并基于这些数据生成一个列表。在helper方法中生成列表之后,我想循环这个列表。在示例中,这一点很清楚

场景是:我有一些数据,当我解析这些数据时,我想为这些数据中的不一致性创建一些自定义警告。负责从原始JSON数据生成警告的方法称为
generateWarnings()

我有编译模板和呈现数据的函数,定义如下:

function compileTemplate(targetId) {
    return Handlebars.compile($("#" + targetId).html());
}

function renderData(template, context, targetId) {
    $("#" + targetId).html(template(context));
}
我叫他们:

var warningsPlaceHolderId = "warnings_plholder";
var warningsTemplateId = "warnings_template";

var warningsTemplate = HandlebarsHelpers.compileTemplate(warningsTemplateId);
renderData(warningsTemplate, data, warningsPlaceHolderId);
车把模板:

<ol>
    {{#each generateWarnings this}}
        Warning description: {{this.text}}
    {{/each}}
</ol>
因此,我希望这3个警告的
text
属性在一个列表中,但是我得到了一个错误:


未捕获类型错误:renderData()上的inverse不是函数。

这不应该在帮助程序中使用
generateAll()

Handlebars.registerHelper('generateWarnings', function(data) {
        return generateWarnings(data);   // THIS SHOULD BE generateAll(data)??
    });

generateAll: function(data) {
还有,你在用标签?!对于您的函数,它将无法按您期望的方式调用

这:

generateAll:function(data){…}

应该是:

var generateAll=函数(数据){…}

我从未见过标签在JavaScript中的良好用途

您的方法似乎也有点不寻常(而且过于复杂)。为什么不在将数据传递到模板之前操作它呢?我会考虑使用JavaScript来生成警告,然后在传递到模板之前将它们附加到数据中。在这种情况下,我看不出有什么特别的原因需要使用车把助手(当然,我对您试图解决的问题并不完全熟悉)

Handlebars.registerHelper('generateWarnings', function(data) {
        return generateWarnings(data);   // THIS SHOULD BE generateAll(data)??
    });

generateAll: function(data) {