相关疑难解决方法(0)

如何绑定ko.observableArray字符串?

我正在尝试将ko.observableArray的字符串绑定到模板,但是我无法让模板获取数组中字符串中的更改.

如果我绑定一组对象而不是一组字符串,我会获得JSON的更新,但是在我实际更改第一个非数组值之前它们不会触发任何内容.但是,我更愿意找到一个字符串数组,因为我可以将数据模型直接发送回服务器而无需任何后处理.

如何触发我的字符串数组的更新,以及如何确保它们正确触发更改而无需更新非数组值?

如果无法绑定到可观察的字符串数组,那么在更新可观察数组中的对象时如何才能触发事件?

请参阅此处的示例:http://jsfiddle.net/gcEHC/2/

在此示例中,当value更改时,array3的数据将反映在模型中,但是对array1和array2的数据的更改将永远不会显示.

JS:

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

ko.applyBindings(new ViewModel());
Run Code Online (Sandbox Code Playgroud)

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 data-bind="foreach: array3">
        <p><input data-bind='value: data' /></p> 
    </div>
</div>

<pre data-bind="text: ko.toJSON($data)"></pre>
Run Code Online (Sandbox Code Playgroud)

knockout-2.0 knockout.js knockout-mvc

8
推荐指数
2
解决办法
8119
查看次数

Knockout绑定不会使用简单的observable数组进行更新

我的视图模型中有一个字符串列表.要编辑它们,我希望每个都显示为<li>带有文本框,以及<button>删除项目.所以,对于列表['A', 'B'],我想要这样的东西:

<ul data-bind="foreach: titles">
    <li>
        <input value="A" data-bind="value:$data" />
        <button data-bind="click: $root.remove">remove</button>
    </li>
    <li>
        <input value="B" data-bind="value:$data" />
        <button data-bind="click: $root.remove">remove</button>
    </li>
</ul>
<button data-bind="click: add">add</button>
Run Code Online (Sandbox Code Playgroud)

我最初可以创建它,但是没有得到值的更新以反映在视图模型中,并且无法使删除按钮工作.

我最初有一个observableArray简单的字符串,然后更新到observableArrayobservable字符串.使用纯字符串,删除按钮有效,但可以预见,它不会更新视图模型.

我设置了一个相当孤立的JS小提琴:http://jsfiddle.net/bdukes/uvyH3/2/

如果有一种既定或更好的方法,我很想知道.

此外,作为一个不相关(并且不太重要)的问题,该stringifyJson实用程序似乎总是给出数组中每个项目的空结果.

knockout.js

4
推荐指数
1
解决办法
1835
查看次数

标签 统计

knockout.js ×2

knockout-2.0 ×1

knockout-mvc ×1