在我添加新行后,KO'observable'没有发布。
HTML
<input type="text" data-bind="value: newName" />
<button data-bind="click: add">Create</button>
JS
self.newName = ko.observable("");
self.add = function () {
self.clients.push({
Name : self.newName,
})
}
LIST-开始
<ul>
<li>John</li>
<li>Joe</li>
<ul>
列出生产 我使用字段并添加“Foo”工作
<ul>
<li>John</li>
<li>Joe</li>
<li>Foo</li>
<ul>
然后我添加另一个名字'Bar' ..现在我有(2)'Bar','Foo'被替换
<ul>
<li>John</li>
<li>Joe</li>
<li>Bar</li>
<li>Bar</li>
<ul>
然后我添加另一个名字'JarJar',现在我有(3)'JarJar','Bar'被替换
<ul>
<li>John</li>
<li>Joe</li>
<li>JarJar</li>
<li>JarJar</li>
<li>JarJar</li>
<ul>
然而,当我删除每一行时,它确实删除了选择行,而不是所有3行
添加行时,如何停止字段上的observable?
我仍然需要将新添加的行添加到KO数组中,以便稍后可以访问它。
我认为我在self.add之后缺少一些东西要么释放字段的observable,要么创建一个= new的东西,因此newName是一个单独的Array对象。 (完全不确定..)
答案 0 :(得分:1)
由于缺少()
,您传递Name
ko.observable
函数本身,而不是它所拥有的值。
这就是你复制的原因,因为clients
数组中所有创建的对象都共享对同一函数的引用。
以下是应该正常工作的固定代码:
self.newName = ko.observable("");
self.add = function () {
self.clients.push({
Name : self.newName(),
})
}