如何在 Observablehq 中创建带标签的输入字段

Yur*_*rik 4 observablehq

我可以使用此代码创建一个输入文本框。在同一行添加标签,同时仍将其绑定到同一个全局变量的最佳方法是什么?

viewof myText = html`<input type="text" value="initial value">

我想

viewof myText = html`Enter something: <input type="text" value="initial value">

但 myText 不绑定到输入字段。

tmc*_*mcw 6

获得此效果的最简单方法是使用 Jeremy 的输入笔记本,其中包括带标签的文本框。您import只需将文本框方法放入笔记本中即可解决一般问题。

在不导入另一个笔记本的情况下,最简单的方法是这样的:

viewof myText = {
  let form = html`Enter something: <input type="text" value="initial value">`;
  form.addEventListener('input', e => {
    form.value = e.target.value
  });
  return form;
}
Run Code Online (Sandbox Code Playgroud)

viewof读取.value返回给它的内容的属性,并且此代码将该.value属性设置为所包含输入的值。当输入元素是单元格中唯一的元素时,viewof 无需任何额外代码即可工作,但如果有多个元素都具有值,则用户代码需要告诉笔记本哪个输入提供该值。


小智 6

目前(2021 年 10 月)可观察输入是向笔记本添加输入元素的首选方式。查看介绍性笔记本和集合

viewof myText = Inputs.text({
  label: "Enter something",
  placeholder: "Text",
  value: "Initial value"
})
Run Code Online (Sandbox Code Playgroud)