数据不与Knockout绑定

时间:2016-02-01 22:49:38

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

我正在使用ajax调用MVC 6操作并获取数据,但是我很难获得我的第一个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));
            });
    }

我在页面加载时调用它,我肯定从操作中获取数据。 &#34;完成&#34;回调被调用。它只是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>

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

谢谢, 杰

1 个答案:

答案 0 :(得分:0)

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