动态html属性的字符串插值

时间:2017-01-10 08:33:33

标签: javascript typescript ecmascript-6

是否可以在下面使用字符串插值(注意动态属性)

document.body.innerHTML += <form id="digSigForm" action="${myObj.Url}" method="post"><input type="hidden" name="data" value="${myObj.someVal}"></form>

3 个答案:

答案 0 :(得分:0)

document.body.innerHTML += `<form id="digSigForm" action="${myObj.Url}" method="post"><input type="hidden" name="data" value="${myObj.someVal}"></form>`;

你忘记了反叛

答案 1 :(得分:0)

这当前不起作用。

我有一个像这样的字符串,其中依赖行的data属性来实现某些功能。

`<tr class="row ${rowHiddenClass}" data-someId="${this.someId}">
  <td class="cell">${this.Notes}</td>
  <td class="cell amount">$${this.Amount}</td>
</tr>`

它在属性字符串中输出这样的内容,这破坏了功能。

<tr class="row $" data-someId="$">
  <td class="cell">A nice note</td>
  <td class="cell amount">$4.00</td>
</tr>

我们暂时可能必须进行一些连接。
我还不确定什么是更干净,更简单的解决方案。

这有效。

`<tr class="row ` + rowHiddenClass + `" data-someId="` + this.someId + `">
  <!-- ... -->
</tr>`

答案 2 :(得分:-1)

你应该使用反引号来定义一个带字符串interpollat​​ion的字符串:``

像这样:

console.log(`1 and 1 make ${1 + 1}`);

这来自typescript documentation

  

另一个常见的用例是当你想生成一些字符串输出时   一些静态字符串+一些变量。为此你需要一些   模板逻辑,这是模板字符串的名称   从。以下是您可能生成html字符串的方法   先前:

var lyrics = 'Never gonna give you up';
var html = '<div>' + lyrics + '</div>';
  

现在使用模板字符串,您可以这样做:

var lyrics = 'Never gonna give you up';
var html = `<div>${lyrics}</div>`;
  

请注意插值内的任何占位符($ {和})都是   作为JavaScript表达式处理并作为这样的表达式进您可以   做数学。

console.log(`1 and 1 make ${1 + 1}`);