Knockout.js 如何更新或刷新ViewModel数据,然后更新视图

Knockout.js 如何更新或刷新ViewModel数据,然后更新视图,knockout.js,knockout-2.0,Knockout.js,Knockout 2.0,我是一个新手,我想知道如何让它在我当前的项目中发挥作用。具体来说,我有一个viewmodel,它通过对服务器的ajax调用加载json数据。一旦收到数据,就会应用敲除绑定,并在屏幕上以html格式显示数据。效果很好 现在最困难的部分。。。(至少对我来说)此外,在html中,我有一些元素(复选框、单选按钮、下拉列表等),用户可以在其中选择值。选择完值后,该用户单击按钮更新页面上的数据。因此,单击按钮将所选值发送回服务器,以重新查询数据库以获取新的数据集合。然后,服务器需要将更新的json列表发送回

我是一个新手,我想知道如何让它在我当前的项目中发挥作用。具体来说,我有一个viewmodel,它通过对服务器的ajax调用加载json数据。一旦收到数据,就会应用敲除绑定,并在屏幕上以html格式显示数据。效果很好

现在最困难的部分。。。(至少对我来说)此外,在html中,我有一些元素(复选框、单选按钮、下拉列表等),用户可以在其中选择值。选择完值后,该用户单击按钮更新页面上的数据。因此,单击按钮将所选值发送回服务器,以重新查询数据库以获取新的数据集合。然后,服务器需要将更新的json列表发送回页面和敲除,并且需要使用新数据更新viewmodel和html显示。或者,至少这是我需要它工作的方式。我绞尽脑汁想怎么做已经有一段时间了

那么,在查询数据库、绑定knockout和viewmodel并显示数据之后,我如何通过重新查询数据库来请求不同的数据,从服务器获取新数据,将knockout和viewmodel重新绑定到新数据,并在同一html页面中显示新数据(仅显示更新的数据)


提前谢谢

您可以尝试在视图模型中使用表示数据的模型,并更新此模型,而不是更新整个视图模型

        function ViewModel()
        {
            this.data = ko.observable();
            var self = this;

            self.load = function()
            {
                var dataModel = new DataModel(1, 'Value');
                self.data(dataModel); // init
            };

            self.update = function()
            {
                var dataModel = new DataModel(2, 'Value UPD');
                self.data(dataModel); // update
            };
        }

        function DataModel(id, property)
        {
            this.id = id;
            this.property = property;
        }

        ko.applyBindings(new ViewModel());