javascript - 使用 knockout.js 如何刷新 Select 元素中的可观察数组

标签 javascript html knockout.js

加载下拉列表后,项目将正确填充。但是,当我单击“刷新”按钮时,下拉菜单项不会刷新。单击“刷新”按钮时数据绑定(bind)不起作用。单击“刷新”按钮后,我希望看到“Mary”和“Sandra”。

这是 JavaScript:

        $(function () {

        function viewModel() {
            var self = this;

            self.persons = ko.observableArray([]);
            self.persons.push({
                id: 1,
                name: 'John'
            });
            self.persons.push({
                id: 2,
                name: 'Paul'
            });

            self.refreshPersonList = function () {
                self.persons = ko.observableArray([]);
                self.persons.push({ id: 3, name: 'Mary' });
                self.persons.push({ id: 4, name: 'Sandra' });
            };
        }
        ko.applyBindings(new viewModel());
    });

和 HTML:

<select data-bind="options: $root.persons(), optionsValue: 'id', optionsText: 'name'"></select>
    <button value="Refresh" data-bind="event: {click : $root.refreshPersonList() }">Refresh Person List</button>

最佳答案

在这里,您将创建一个新数组,打破现有的绑定(bind):

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

尝试清空数组:

self.refreshPersonList = function () {
    self.persons.removeAll();  //Empty array
    self.persons.push({ id: 3, name: 'Mary' });
    self.persons.push({ id: 4, name: 'Sandra' });
};

关于javascript - 使用 knockout.js 如何刷新 Select 元素中的可观察数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28954659/

相关文章:

javascript - ReactJS:如何不断检查本地存储中的 token 是否已过期?

javascript - 为什么我的 ajax GET 数据会生成一个奇怪的 JSON 对象?

javascript - 如何使用 javascript 和 css 在 Internet Explorer 中设置页面大小和打印页边距?

asp.net - 用于桌面共享的 HTML5/H.264 格式

c# - 如何使用 C# 在代码后面的 asp.net 中编写 javascript

html - 输入和选择字段的长度不同

javascript - Jquery dom 操作与 knockout

javascript - ajax 请求在 knockout js 中发送第二次点击

两侧带有自定义图像的 JavaScript 硬币翻转动画

javascript - 鼠标移动时移动 div