javascript - TextArea 中的 For-Each 循环

标签 javascript meteor handlebars.js

当我尝试在纯 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 操纵了文本区域的值,效果非常好。

我还是想澄清一下这个案例:

  1. 为什么我没有得到预期的输出?如果我在文本区域之外使用循环,它会正确打印字符串。
  2. 这些字符串是什么? JavaScript 的内部对象 ID 等?

不胜感激!

最佳答案

这些字符串看起来像 Spark landmarks .这很奇怪,但可能会在下一个 Meteor 版本中重写渲染引擎时得到修复。

这可能与将字符串文字作为上下文传递给助手时的问题有关;它变成了一个对象。

https://github.com/meteor/meteor/issues/1447

回到字符串文字的一种方法是编写一个帮助程序。代替{{this}},编写{{printString}},并定义

Template.test.printString = function() { return "" + this; }

关于javascript - TextArea 中的 For-Each 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21484125/

相关文章:

javascript Aertify 无法与确认框一起正常工作

javascript - 如何在 Angular 应用程序中使用 OrientDB HTTP API?

meteor - Iron-router 在渲染之前等待 Collection.findOne() 作为数据对象

javascript - 当我更新数据库中的用户文档时,Meteor 用户被注销

javascript - Meteor发布错误检测

json - json 对象的 Handlebars 数组

handlebars.js - 如何在 Big Commerce 中按名称字段中的多个值过滤 Product.custom_fields

javascript - 动态 contenteditable 脚本在 Firefox 上崩溃(但在 Chrome 上运行)

javascript - array.reverse() 在平面数组中逐 block

javascript - #each 上的 Handlebars 解析错误