簡體   English   中英

TextArea中的For-Each循環

[英]For-Each Loop in TextArea

當我嘗試在純HTML textarea中使用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操縱textarea的值,這非常有效。

我還想對這個案子做一些澄清:

  1. 為什么我沒有得到預期的輸出? 如果我在textarea之外使用循環,它會正確打印字符串。
  2. 這些弦是什么? JavaScript的內部對象ID等?

每一個小幫助都表示贊賞!

這些字符串看起來像Spark地標 這很奇怪,但可能會在下一個Meteor版本中重寫渲染引擎時修復。

這可能與字符串文字作為上下文傳遞給幫助者時的問題有關; 它變成了一個對象。

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

回到字符串文字的一種方法是編寫一個幫助器。 而不是{{this}} ,寫{{printString}} ,並定義

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

嗯,這應該工作! 如果在安德魯的建議之后仍然沒有,請嘗試以下方法:

1)將數據移出幫助程序:

var array = ["String1", "String2", "String3"];
Template.test.array = function(){
  return array;
};

2)將數據條目包裝在對象中,作為解決方法:

Template.test.array = function(){
  return [{label: "String1"}, {label: "String2"}, {label: "String3"}];
};

{{#each array}}
  {{label}}
{{/each}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM