Как обновить или обновить данные ViewModel, а затем представление

Я новичок в нокауте и пытаюсь понять, как заставить его работать для моего текущего проекта. В частности, у меня есть модель представления, которая загружается данными json через вызов ajax на сервер. После получения данных применяются нокаутирующие привязки, и данные отображаются в html на экране. Работает хорошо.

Теперь самое сложное... (по крайней мере для меня). Кроме того, в html у меня есть элементы (флажки, переключатели, выпадающие списки и т. д.), в которых пользователь может выбирать значения. Выбрав значения, этот пользователь нажимает кнопку, чтобы обновить данные на странице. Таким образом, нажатие кнопки отправляет выбранные значения обратно на сервер, чтобы запросить базу данных для нового набора данных. Затем сервер должен отправить обновленный список json обратно на страницу и нокаут, а модель представления и отображение html необходимо обновить новыми данными. Или, по крайней мере, так мне нужно, чтобы это работало. Я уже некоторое время ломаю голову, как это сделать.

Итак, после запроса к базе данных, привязки нокаута и модели представления и отображения данных, как я могу запросить разные данные, повторно запросив базу данных, получить новые данные с сервера, повторно привязать нокаут и модель представления к новым данным и отобразить новые данные на той же html странице (только с обновленными данными)?????

Заранее спасибо!


person g6temp    schedule 29.08.2012    source источник


Ответы (1)


Вы можете попробовать использовать модель, которая представляет ваши данные в модели просмотра, и обновить эту модель вместо обновления всей модели просмотра.

        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());
person vadim    schedule 30.08.2012