当我尝试在纯 HTML 文本区域内使用 Handlebars ForEach 循环时,我遇到了一些意想不到的行为。
首先让我向您展示我的代码:
我的 template.html:
<template name="test">
<textarea>
{{#each array}}
{{this}}
{{/each}}
</textarea>
</template>
我的 template.js:
Template.test.array = function(){
return ["String1", "String2", "String3"];
}
问题:
我实际上期待一些看起来像这样的输出:
String1
String2
String3
相反,我得到了这个:
<!--data:46XrgsL9aX8aCa3Ek-->
<!--data:tu6FiCxRraSLoh2w9-->
<!--data:5h3PkyB66dHw4zrWF-->
作为变通方法,我使用了 Handlebars 助手并使用 jQuery 操纵了文本区域的值,效果非常好。
我还是想澄清一下这个案例:
- 为什么我没有得到预期的输出?如果我在文本区域之外使用循环,它会正确打印字符串。
- 这些字符串是什么? JavaScript 的内部对象 ID 等?
不胜感激!
最佳答案
这些字符串看起来像 Spark landmarks .这很奇怪,但可能会在下一个 Meteor 版本中重写渲染引擎时得到修复。
这可能与将字符串文字作为上下文传递给助手时的问题有关;它变成了一个对象。
回到字符串文字的一种方法是编写一个帮助程序。代替{{this}}
,编写{{printString}}
,并定义
Template.test.printString = function() { return "" + this; }
关于javascript - TextArea 中的 For-Each 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21484125/