【问题标题】:Data not binding with Knockout数据不与 Knockout 绑定
【发布时间】:2016-05-10 13:51:32
【问题描述】:

我正在使用 ajax 调用 MVC 6 操作并取回数据,但我无法让我的第一个 sn-p Knockout 将值绑定到我的 HTML 控件。这是 C# 中的模型:

public class PrimaryCare
{
    public string Tab1Name { get; set; }
    public string Tab2Name { get; set; }
    public List<PrimaryCareProvider> PrimaryCareProviders { get; set; }
}

现在,我只是想让选项卡名称起作用,所以忽略第三个属性。我正在使用:

return Json(populatedObject, JsonRequestBehavior.AllowGet);

在 MVC 操作中。正如我所说,我在 ajax 调用中获取所有数据,如下所示:

function LoadPageData() {
        $.ajax({
                url: "/Default/GetPrimaryCareData",
                dataType: "json",
                method: "GET"
            }).
            done(function(data) {
                var viewModel = {};
                viewModel = ko.mapping.fromJSON(data);
                ko.applyBindings(viewModel);
            }).
            fail(function(jqXhr, textStatus) {
                alert(JSON.stringify(jqXhr));
            });
    }

我在页面加载时调用它,我肯定会从操作中获取数据。 “完成”回调被调用。这只是 KO 绑定不起作用。我已经尝试了各种各样的东西,但这就是我目前所拥有的(上图)。这是相应的 HTML(我正在尝试设置 Bootstrap 选项卡名称):

<ul class="nav nav-tabs">
    <li class="active">
        <a data-toggle="tab" href="#tab1"><span data-bind="text:Tab1Name"></span></a>
    </li>
    <li>
        <a data-toggle="tab" href="#tab2"><span data-bind="text:Tab2Name"></span></a>
    </li>
</ul>

未填充任何值。有什么想法吗?

谢谢, 周杰伦

【问题讨论】:

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


    【解决方案1】:

    既然你告诉jQuery dataType 是JSON,jQuery 已经为你调用了JSON.parse,所以你传递给ko.mapping 的数据不再是JSON。请改用ko.mapping.fromJS(data)

    【讨论】:

    • 我之前也尝试过,但那时肯定有其他问题。这成功了。此外,您的回答帮助我更多地了解幕后发生的事情。谢谢。
    猜你喜欢
    • 2015-12-03
    • 2014-02-21
    • 2014-03-09
    • 1970-01-01
    • 2016-01-18
    • 2015-10-11
    • 2012-07-07
    • 2015-06-08
    • 2018-07-18
    相关资源
    最近更新 更多