【发布时间】:2013-04-01 18:47:06
【问题描述】:
这是How can I bind a ko.observableArray of strings?的后续行动
如何将可编辑的可观察字符串数组绑定到一组输入框?我不想绑定到对象数组,因为我从服务器发送的底层 JSON 是一个字符串数组。
以下示例不起作用(在http://jsfiddle.net/LDNeA/ 尝试)。用可观察字符串绑定对象数组是可以的,但是直接绑定可观察字符串数组是不行的,而且模型没有更新。
重要的是文本框中的条目被映射回模型。
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>
【问题讨论】:
-
这绝对是一个问题,但是如果将 JSON 作为简单数组发送回服务器是唯一的要求,您会接受一个将自身序列化为单个值的对象,以便 看起来 就像一个数组?
-
@Tyrsius - 如果答案是“这目前是 knockout.js 中的一个错误”或“这就是为什么这永远无法工作”,我会接受这个答案。 :)
-
显然这是一个已记录的问题,我更新了我的答案
标签: knockout.js knockout-2.0 knockout-mvc