Ich bin neu in Lenker und während ich einen Workaround gefunden habe, frage ich mich, warum ein registrierter Helfer funktioniert und einer nicht. Das Beispiel, das nicht funktioniert, ist ein Beispiel aus der HB-Dokumentation.Lenker JEDER Iterator-Fehler
HTML:
<ul class="global-nav clearfix">
{{#each data}}
<li><a href="{{href}}">{{text}}</a></li>
{{/each}}
</ul>
...
<ul class="content-nav clearfix">
{{#each data}}
<li><a href="{{href}}">{{text}}</a></li>
{{/each}}
</ul>
Daten:
var nav = [
{
name: 'global',
selector: $('.global-nav'),
data: [
{
text: 'Page 1',
href: 'page1.html'
}, {
text: 'Page 2',
href: 'page2.html'
}
],
name: 'content',
selector: $('.content-nav'),
data: [
{
text: 'Section 1',
href: '#section1'
}, {
text: 'Section 2',
href: '#section2'
}
]
}
];
Compiler:
$.each(nav, function() {
var obj = this,
src = obj.selector.html(),
template = Handlebars.compile(src),
html = template(obj.data);
obj.selector.html(html);
});
HB Helper (funktioniert nicht - Kontext undefiniert):
Handlebars.registerHelper('each', function(context, options) {
var ret = "";
for(var i=0, j=context.length; i<j; i++) {
ret = ret + options.fn(context[i]);
}
return ret;
});
HB Helper (funktioniert mit this
statt Kontext):
Handlebars.registerHelper('each', function(context, options) {
var ret = "";
for(var i=0, j=this.length; i<j; i++) {
ret = ret + options.fn(this[i]);
}
return ret;
});
Jeder hilft sehr geschätzt wird.