Knockout.js 如何将DOM元素绑定到KnockoutJS中的特定对象?

Knockout.js 如何将DOM元素绑定到KnockoutJS中的特定对象?,knockout.js,Knockout.js,我有一个可观察的数组,绑定到contenteditable div列表。我有一个“添加”按钮。单击后,我将一个对象添加到数组中,并希望将焦点放在相应的div上 <ul id='list' data-bind="foreach: array"> <li> <div contenteditable="true" data-bind="text: $data.text"></div> </li> </ul> <

我有一个可观察的数组,绑定到contenteditable div列表。我有一个“添加”按钮。单击后,我将一个对象添加到数组中,并希望将焦点放在相应的div上

<ul id='list' data-bind="foreach: array">
  <li>
    <div contenteditable="true" data-bind="text: $data.text"></div>
  </li>
</ul>
<div id="add">+</div>
可以获得具有DOM元素的可观测数据
ko.dataFor(DOM)
。如何通过数据获取DOM


谢谢

您无法从数据本身获取DOM元素。但是在这个场景中,您可以使用
hasfocus
绑定将焦点移动到新元素。此处的文档:

即使只是在新元素上放置
hasfocus:true
,也能起到作用

否则,如果不希望焦点应用于最初渲染的元素,则可以为新创建的元素传入一个标志,如:

<ul id='list' data-bind="foreach: array">
  <li>
    <div contenteditable="true" data-bind="hasfocus: $data.focused, text: $data.text"></div>
  </li>
</ul>
<div id="add">+</div>

样本:

谢谢。虽然我可以通过dom获取数据,但不能通过dom获取数据,这让我感到非常沮丧
<ul id='list' data-bind="foreach: array">
  <li>
    <div contenteditable="true" data-bind="hasfocus: $data.focused, text: $data.text"></div>
  </li>
</ul>
<div id="add">+</div>
var newObject = {text : '', focused: true};
viewModel.array.push(newObject);