gpt4 book ai didi

meteor Handlebars {{#if}} 将字符串变成对象

转载 作者:行者123 更新时间:2023-12-04 19:07:53 25 4
gpt4 key购买 nike

The bug source code is here .

假设我正在使用普通的 {{#each}} 在 Meteor 中循环遍历一个数组环形。每个数组元素都是一个字符串,我每一步都使用 {{this}} 输出字符串.到现在为止还挺好!如果我使用 Handlebars 助手检查 typeofthis我会得到string .甜的!一切都是应该的。

但是如果我添加一个 {{#if something }} -helper 里面 {{#each}} (something 只返回 true 并因此继续运行并输出 {{this}} )该字符串在 HTML 中看起来仍然不错,但它现在是 objecttypeof查看!

这是 super 烦人的所有 (typeof someVarINeedToTest === 'string')我的代码可能取决于现在将返回 false。

难道我做错了什么?

或者这是一个实际的错误?

如果是这样:它是 Meteor 特定的还是 Handlebars 特定的错误?

谢谢!

哦:the source link again .拉动就跑 meteor并查看您的浏览器控制台。

最佳答案

这是因为 this变量应该始终是 JavaScript 中的对象,所以当 someFunction.apply(someContext);被 Handlebars 调用,JavaScript 变成 someContext变成一个对象,无论它以什么开始。在此处查看示例:http://jsfiddle.net/SyKSE/1/

(在本例中,someFunction 表示模板中位于 {{#if}} 语句中的部分。)

一个简单(虽然丑陋)的解决方法是始终将数据作为对象传入,因此

['this', 'is', 'an', 'array', 'that', 'we\'re', 'looping', 'through'];

变成:
[{val: 'this'}, {val: 'is'}, {val: 'an'}, {val: 'array'}, {val: 'that'}, {val: 'we\'re'}, {val: 'looping'}, {val: 'through'}];

然后您将更改模板以查看 val而不是 this

关于 meteor Handlebars {{#if}} 将字符串变成对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19982695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com