knockout.js 无法在视图中的foreach内设置挖空绑定

j8yoct9x  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(164)

我是knockout的新手,正在尝试弄清楚一些事情。我试图在我的视图上将foreach中的文本框绑定到一个可观察的数组,但没有成功。输出foreach没有问题,但在内部不起作用。
我在js中有一个视图上的简单文本框和一个匹配的observable。这个文本框和observable是完美绑定的,并且总是在文本框值改变时得到更新。
我还有一个表,它有一个foreach,在foreach中有另一个文本框,它的绑定略有不同,因为它绑定到一个数组,其中每次迭代都代表表的每一行。
在foreach中的文本框上,我在绑定时遇到了问题。更新这些文本框中的任何一个似乎都不会更新可观察数组。
这是我的工作文本框和绑定。

<input data-bind="value: testText" />

self.testText = ko.observable("aaa");

有了上面的,console.log(self.testText());总是显示文本框中的内容
这是我在foreach中的非工作文本框

<tbody data-bind="foreach: Tasks">
    <tr class="taskItem">
        <td><input type="text" data-bind="textInput: $data.Desc()" /></td>
    </tr>
</tbody>

装订:

self.Tasks = ko.observableArray([]);

现在是console.log(自身.任务()[0].描述());不反映表上[0]位置的文本框中的内容。我猜这个文本框没有正确绑定到可观察数组,但不确定为什么。
我会期望console.log(self.Tasks()[0].Desc());以显示foreach表中位置[0]处文本框中任何内容的值。
任何帮助都是非常感谢的。干杯

lp0sw83n

lp0sw83n1#

您需要从data-bind移除()。在textInput系结行程常式内,knockout会检查运算式系结是否为可观察的。因为您有Desc(),所以它会评估为静态初始值。因此,对输入的任何更新都不会将它更新回检视模型的属性。
(Also,您可以从绑定中删除$data
第一个

相关问题