1

新しい行を追加した後、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,
    })
}

リスト開始

<ul>
    <li>John</li>
    <li>Joe</li>
<ul>

LIST PRODUCED フィールドを使用し、機能する「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つすべてではなく、選択行が削除されます

行を追加するときに、オブザーバブルを「フィールド上」で停止するにはどうすればよいですか?

後でアクセスできるように、新しく追加した行を KO 配列に追加する必要があります。

フィールドのオブザーバブルを解放するか、= new 何かを作成して、newName が別の Array オブジェクトになるように、self.add の後に何かが欠けていると思います。(まったくわからない..)

4

1 に答える 1

1

欠落しているため、保持する値ではなく、関数自体()を渡しています。Nameko.observable

clientsそのため、配列内に作成されたすべてのオブジェクトが同じ関数への参照を共有しているため、重複があります。

正しく動作するはずの修正コードは次のとおりです。

self.newName = ko.observable("");

self.add = function () {
    self.clients.push({
          Name : self.newName(),
    })
}
于 2013-01-25T20:13:44.523 に答える