gpt4 book ai didi

knockout.js - 如何将 DOM 元素绑定(bind)到 KnockoutJS 中的特定对象?

转载 作者:行者123 更新时间:2023-12-04 18:46:01 33 4
gpt4 key购买 nike

我有一个可观察的数组,绑定(bind)到 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>

javascript
var viewModel = {
array: ko.observableArray([])
};

ko.applyBindings(viewModel, document.getElementById('list'));

document.getElementById('add').onclick = function (evt) {
var newObject = {text : ''};
viewModel.array.push(newObject);
// give focus to the newly created div
};

可以获得具有 DOM 元素 ko.dataFor(dom) 的可观察数据.如何通过数据获取 DOM?

http://jsfiddle.net/5rxdZ/

谢谢

最佳答案

您无法从数据本身获取 DOM 元素。不过,在这种情况下,您可以使用 hasfocus绑定(bind)以将焦点移动到新元素。此处的文档:http://knockoutjs.com/documentation/hasfocus-binding.html

即使只是放置 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>

查看模型:
var newObject = {text : '', focused: true};
viewModel.array.push(newObject);

sample : http://jsfiddle.net/rniemeyer/jnHK8/

关于knockout.js - 如何将 DOM 元素绑定(bind)到 KnockoutJS 中的特定对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14237314/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com