gpt4 book ai didi

knockout.js - 如何绑定(bind)可编辑的 ko.observableArray 可观察字符串?

转载 作者:行者123 更新时间:2023-12-02 21:50:55 25 4
gpt4 key购买 nike

这是 How can I bind a ko.observableArray of strings? 的后续内容

如何将可观察字符串的可编辑可观察数组绑定(bind)到一组输入框?我不想绑定(bind)到对象数组,因为从服务器发送的底层 JSON 是字符串数组。

以下示例不起作用(请在 http://jsfiddle.net/LDNeA/ 处尝试)。用 observable 字符串绑定(bind)对象数组是可以的,但是直接绑定(bind) observable 字符串数组不行,模型也不会更新。

重要的是文本框中的条目被映射回模型。

JS:

var ViewModel = function() {
this.value = ko.observable("hi")
this.array1 = ko.observableArray([ko.observable("hi"), ko.observable("there")]);
this.array2 = ko.observableArray([{ data: ko.observable("hi") }, { data: ko.observable("there") }]);
};

ko.applyBindings(new ViewModel());

HTML:

<div class='liveExample'>   
<p><input data-bind='value: value' /></p>
<div data-bind="foreach: array1">
<p><input data-bind='value: $data' /></p>
</div>
<div data-bind="foreach: array2">
<p><input data-bind='value: data' /></p>
</div>
</div>

<pre data-bind="text: ko.toJSON($data)"></pre>

最佳答案

正如 @Tyrsius 发布的链接所指出的,这是 Knockout 中的一个错误(?)。

最简单的解决方法是使用 $parent.items()[$index()],如以下 fiddle 所示:http://jsfiddle.net/r8fSg/ 。请注意,$parent.items() 是 foreach 中使用的项目的 observableArray。

<div data-bind="foreach: items">
<p><input data-bind='value: $parent.items()[$index()]' /></p>
</div>

<pre data-bind="text: ko.toJSON($data)"></pre>

型号:

var ViewModel = function() {
this.items = ko.observableArray([ko.observable("hi"), ko.observable("hi")]);
};

ko.applyBindings(new ViewModel());

关于knockout.js - 如何绑定(bind)可编辑的 ko.observableArray 可观察字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15749572/

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