如何更新或刷新ViewModel数据,然后更新View

时间:2012-08-29 22:07:29

标签: knockout.js knockout-2.0

我是淘汰赛的新手,并试图找出如何让它适合我当前的项目。具体来说,我有一个viewmodel通过ajax调用服务器加载json数据。收到数据后,将应用挖空绑定,数据将显示在屏幕上的html中。效果很好。

现在困难的部分......(至少对我来说)另外,在html中,我有用户可以选择值的元素(复选框,单选按钮,下拉菜单等)。完成选择值后,此用户单击按钮以更新页面上的数据。因此,按钮单击将所选值发送回服务器以重新查询数据库以获取新的数据集合。然后,服务器需要将更新的json列表发送回页面并进行淘汰,并且需要使用新数据更新viewmodel和html显示。或者,至少这是我需要它工作的方式。我一直在试着如何做这件事一段时间。

因此,在查询数据库,绑定knockout和viewmodel,并显示数据后,如何通过重新查询数据库,从服务器获取新数据,重新绑定knockout和viewmodel到新数据来请求不同的数据,并显示同一html页面中的新数据(只是更新后的数据)?????

提前致谢!

1 个答案:

答案 0 :(得分:0)

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

        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());