javascript - knockout 不更新 View 中的值

标签 javascript html mvvm knockout.js

我有以下标记:

<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>

我的 View 模型如下所示:

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数组,但是 标记不反射(reflect)这些更改。那么这有什么问题吗?

最佳答案

明白了!您需要更改:

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

对此:

this.nameList.push("name");

(因为nameList是一个数组,而不是一个方法)

演示:http://jsfiddle.net/G464V/

关于javascript - knockout 不更新 View 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15689913/

相关文章:

html - 编辑元素之间的空间

javascript - 输入值更新困境

MVVM - View 是否应该影响 MainWindow ViewModel?

c# - 如何在 WPF 中从一页导航到另一页

javascript - Redux Thunk 用于简单的异步请求

javascript - 如何在切换按钮中添加功能

javascript - 如何使用 Cocos2D 制作 HTML5 Canvas 整页大小

html - 多个 CSS 类值

javascript - asp.net +将表行发送到Javascript的代码

c# - 将数据从 View 绑定(bind)到 ItemsPanelTemplate