在淘汰赛中更新viewmodel并更新UI

时间:2013-10-31 19:37:56

标签: c# javascript jquery asp.net-mvc knockout.js

下面是我的javascript加载模型,我把它绑定到下拉列表和表格来显示数据。它可以工作并显示数据。

var _observableViewModel = null;     
$(document).ready(function () {
                var jsonModel = '@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(this.Model))';
                _observableViewModel = ko.mapping.fromJSON(jsonModel);

                ko.applyBindings(_observableViewModel);
            });

一旦用户从下拉列表中选择一个项目,我就会调用一个返回jsonresult的ajax函数,并希望更新viewmodel并更新表格。我试过下面的东西,但没有效果。 我正在使用mvc。 谢谢你的帮助!

 function GetData() {

            $.getJSON("/Home/Test", function (data) {

                ko.mapping.updateModel(data);


            }) 

1 个答案:

答案 0 :(得分:1)

因为你已经在使用ko.mapping,所以你真的应该使用指定目标的映射重载:

ko.mapping.fromJSON(jsonModel, {}, _observableViewModel)

它将像以前一样更新observable,并调用可观察的valueWillMutate / valueHasMutated方法来更新UI。