【问题标题】:update viewmodel in knockout and update the UI在淘汰赛中更新视图模型并更新 UI
【发布时间】:2013-10-31 19:37:56
【问题描述】:

下面是我加载模型的 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 函数并希望更新视图模型并更新表。我在下面尝试了一些方法,但没有效果。 我正在使用 mvc。 感谢您的帮助!

 function GetData() {

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

                ko.mapping.updateModel(data);


            }) 

【问题讨论】:

  • 我认为您想要实现的目标可以通过 ko.mapping 完成。我的意思是你应该再次调用映射它可能会起作用。
  • 你的对象ko.viewModel是什么?你的 ko.viewModel.updateModel 试图做什么?
  • @beauXjames 我已经将 _observableViewModel 绑定到我的表,我正在尝试再次更新它,以便它反映我表上的新数据
  • 我“理解”...重点是,如果您不向我展示您的“updateModel”功能在做什么,我将无法提供任何帮助...最好的获取方式帮助是在您无法用语言表达时生成小提琴。
  • @adt 我确实尝试过 ko.mapping.updateModel(data);哪一个也有效

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


【解决方案1】:

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

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

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

【讨论】:

  • @darius...zsri 需要的不仅仅是单线解决方案...在尝试获得绿色检查之前先探索更多信息
  • 是的,我会的,但我仍然没有足够的代表来评论上面的线程
  • 酷,它现在更新我的 UI,我的模型中有两个对象,对象 1 和对象 2,对象 1 包含下拉数据,对象 2 包含表格数据,我希望它只更新对象 2数据,我该怎么做?谢谢大家
  • 模型中的对象也是可观察的吗?
  • @zsri...摆弄一下你的场景,否则它只会成为没人愿意关注的评论线索
猜你喜欢
  • 1970-01-01
  • 2019-11-14
  • 2015-04-01
  • 2015-07-07
  • 2013-07-06
  • 1970-01-01
  • 2016-06-21
  • 2013-03-19
  • 2014-10-07
相关资源
最近更新 更多