0

次のマークアップがあります。

<ul data-bind="foreach: nameList">
    <li data-bind="text: $data"></li>
</ul>
<button data-bind="click: addname">add name</button>
Total names: <span data-bind="text: nameList().length"></span>

私のビューモデルは次のようになります。

var viewmodel = {
    nameList: ko.observableArray(["Brian"]),
    number: ko.observable(100),
    addname: function(){
        alert(this.nameList().length);
        this.nameList().push("name");
        alert(this.nameList().length);
    }
};

ko.applyBindings(viewmodel);

addname メソッドが実行されるたびに、alert は nameList 配列を更新しますが、マークアップにはこれらの変更が反映されません。それで、それの何が問題なのですか?

4

1 に答える 1

2

とった!変更する必要があります:

this.nameList().push("name");

これに:

this.nameList.push("name");

(nameListメソッドではなく配列なので)

デモ: http://jsfiddle.net/G464V/

于 2013-03-28T18:56:16.783 に答える