【问题标题】:Knockout Mapping attempt not mapping with JSON responsesKnockout Mapping 尝试未与 JSON 响应进行映射
【发布时间】:2013-03-13 21:31:10
【问题描述】:

我是淘汰赛的新手,似乎根本无法获得简单的映射。我在 MVC4 C# 中。

我的视图如下所示:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
    ViewBag.Title = "Index";
}

<h2>Simple Mapping Example</h2>

The time on the server is: <span data-bind="text: ServerTime"></span>
and <span data-bind="text: NumberOfUsersConnected"></span> user(s) are connected.

@section Scripts
{
    <script type="text/javascript">

        function ViewModel() {
            var self = this;

            self.ServerTime = ko.observable();
            self.NumberOfUsersConnected = ko.observable();
        }

        var vm = new ViewModel();
        ko.applyBindings(vm);

        $.getJSON('/Mapping/GetServerInfo', function(data) {
            ko.mapping.fromJSON(data, {}, vm);
        });

    </script>
}

从控制器调用“Mapping/GetServerInfo”返回的示例 JSON 是:

{"ServerTime":"2013-03-13T14:24:10.5675104-07:00","NumberOfUsersConnected":5}

对于我尝试过 text 和 value 的数据绑定,都没有导致任何数据被绑定和显示。

我是否遗漏了一些非常明显的东西?

根据 cmets 中的问题,是的,这就是我的布局中的内容。

<script type="text/javascript" src="~/Scripts/knockout-2.2.1.js"></script>
<script type="text/javascript" src="~/Scripts/knockout.mapping-latest.js"></script>

谢谢

【问题讨论】:

  • 您是否在布局中引用了 KO 和 KO.mapping? @RenderSection("Scripts") 是否出现在 @RenderBody 和脚本之后?
  • 更新了原始问题。谢谢

标签: asp.net-mvc knockout.js knockout-mapping-plugin


【解决方案1】:

来自$.getJSONdocumentation

成功回调传递返回的数据,通常是 由 JSON 结构定义并解析的 JavaScript 对象或数组 使用 $.parseJSON() 方法。

所以你的 data 变量持有一个已经解析的对象,所以你需要使用 ko.mapping.fromJS 方法:

$.getJSON('/Mapping/GetServerInfo', function(data) {
   ko.mapping.fromJS(data, {}, vm);
});

【讨论】:

  • 是的,我想通了。感谢您的回复。
猜你喜欢
  • 2018-02-12
  • 2012-12-06
  • 2012-12-03
  • 1970-01-01
  • 1970-01-01
  • 2017-02-20
  • 2020-02-05
  • 2014-10-01
  • 2012-04-16
相关资源
最近更新 更多