@julian said in September 2022 Design Preview (New Base Theme):
We have taken a number of approaches to the design and are close to showing off another preview very soon (an actual one with real content!)
Wow! I look forward to 😳
I am working on benchpressjs and trying to customize NodeBB templates. I found some issues of benchpressjs.
#1. about Interpolation, benchpressjs does NOT allow to retrieve array by index, like this:
<h1>{localNews.topics[0].title}</h1>
#2, about helper function, I created one like this:
Benchpress.registerHelper('getByIndexInArray', function (arrayData, i) {
return arrayData[i];
});
and call this helper function like this:
<h5>{getByIndexInArray(localNews.topics, 1)}</h5>
But it seems like the index "i" can not be passed into the helper function, since in this helper function, I always got "i" as undefined.
it seems like benchpressjs is terrible template engine or maybe what I did is wrong? any suggestion/ideas?
First off, calling their work "terrible" is a really bad strategy if you're trying to get help from someone. I'll still help, because I like being helpful, but please don't act this way in the future.
#1. about Interpolation, benchpressjs does NOT allow to retrieve array by index, like this:
<h1>{localNews.topics[0].title}</h1>
If you're trying to just get a specific single element of an array, you just put the number as the property name, like so:
<h1>{localNews.topics.0.title}</h1>
I see this isn't documented, so I'll open an issue to document this behavior.
#2, about helper function, I created one like this:
Benchpress.registerHelper('getByIndexInArray', function (arrayData, i) {
return arrayData[i];
});and call this helper function like this:
<h5>{getByIndexInArray(localNews.topics, 1)}</h5>But it seems like the index "i" can not be passed into the helper function, since in this helper function, I always got "i" as undefined.
Your helper is correct, it's how you're calling it that's the issue. Benchpress doesn't have numeric literals, it only has string literals. Putting just 1
in there is telling Benchpress to look up the property "1"
on the global object, and call the helper with that value (which is undefined in your case). Your helper will work if you call it like this instead:
<h5>{getByIndexInArray(localNews.topics, "1")}</h5>
I will also add a note to document this behavior in the paths and helper section.
Issue is here: https://github.com/benchpressjs/benchpressjs/issues/89
Thanks for the help and sorry if the "terrible" word hurts your feeling, I didn't mean to.
@PitaJ said in the issue of benchpressjs:
First off, calling their work "terrible" is a really bad strategy if you're trying to get help from someone. I'll still help, because I like being helpful, but please don't act this way in the future.
#1. about Interpolation, benchpressjs does NOT allow to retrieve array by index, like this:
<h1>{localNews.topics[0].title}</h1>If you're trying to just get a specific single element of an array, you just put the number as the property name, like so:
<h1>{localNews.topics.0.title}</h1>
I see this isn't documented, so I'll open an issue to document this behavior.
#2, about helper function, I created one like this:
Benchpress.registerHelper('getByIndexInArray', function (arrayData, i) {
return arrayData[i];
});and call this helper function like this:
<h5>{getByIndexInArray(localNews.topics, 1)}</h5>But it seems like the index "i" can not be passed into the helper function, since in this helper function, I always got "i" as undefined.
Your helper is correct, it's how you're calling it that's the issue. Benchpress doesn't have numeric literals, it only has string literals. Putting just
1
in there is telling Benchpress to look up the property"1"
on the global object, and call the helper with that value (which is undefined in your case). Your helper will work if you call it like this instead:<h5>{getByIndexInArray(localNews.topics, "1")}</h5>
I will also add a note to document this behavior in the paths and helper section.
Issue is here: https://github.com/benchpressjs/benchpressjs/issues/89