【问题标题】:Accessing Properties of returned enumerable child records from getJSON从 getJSON 访问返回的可枚举子记录的属性
【发布时间】:2013-06-12 05:35:31
【问题描述】:

我需要一些帮助来弄清楚如何将 JSON 结果绑定到 MVC4 中的视图。

我有以下视图模型,它返回看似正确的 JSON;

查看模型是

function task(name, duedate, overdue, phase, project, description, groups) {

var self = this;

self.name = ko.observable(name);
self.duedate = ko.observable(duedate);
self.overdue = ko.observable(overdue);
self.phase = ko.observable(phase);
self.project = ko.observable(project);
self.description = ko.observable(description);
self.group = ko.observable(groups);
}


function bTask() {
var self = this;
var parts = document.location.href.split("/");
var id = parts[parts.length - 1];
self.atasks = ko.observableArray([]);

$.getJSON("/api/tasks/GetProjectTasks?id="+id+"&stat=Active", function (data) {
    $.each(data, function (key, val) {
        self.atasks.push(new task(val.Name, moment(val.DueDate).format('DD/MM/YYYY'),  val.overdue, val.Phase, val.Project, val.Description, val.Goups));

    });
 });
}

$(document).ready(function () {
var aTask = new bTask();


ko.applyBindings(aTask, document.getElementById('activetasks'));

function onLoop() {
    var self = aTask;
    var parts = document.location.href.split("/");
    var id = parts[parts.length - 1];

    $.getJSON("/api/tasks/GetProjectTasks?id=" + id + "&stat=Active", function (data) {
        self.atasks.removeAll();
        $.each(data, function (key, val) {
           self.atasks.push(new task(val.Name,  moment(val.DueDate).format('DD/MM/YYYY'), val.overdue, val.Phase, val.Project,  val.Description, val.Goups));
         });

     });



  }

 setInterval(onLoop, 10000);
});

api返回的JSON如下;

[{"$id":"1","DueDate":"2013-06-05T00:00:00","Id":4,"Name":"Address UAT    Issues","Description":"Task 4 Description","Status":"Active","Phase":"Requirements   Review","Project":"RAP C1","StartDate":"2013-05-31T17:28:55.46","overdue":"error","Groups":  [{"$id":"2","Name":"Group 1","Description":"Group 1   Description","ClientId":1,"GroupType":null,"Id":1},{"$id":"3","Name":"Group   2","Description":"Group 2 Description","ClientId":1,"GroupType":null,"Id":2}]}]

如您所见,它返回 1 个包含两个组的任务,这是正确的。

在我的视图中循环访问任务允许我访问任务的任何属性,但我不确定如何访问返回的组和属性。

我需要如何在视图中绑定这个?

我可以在任务 foreach 中进行 foreach 吗?

任何帮助解释这一点都非常感谢。

提前致谢

约翰

【问题讨论】:

    标签: json asp.net-mvc-4 knockout.js asp.net-web-api


    【解决方案1】:

    您可以使用foreach 绑定。

    我根据你的数据做了一个fiddle

    <div data-bind="foreach : Groups">
        <span data-bind="text : $id"></span>
        <span data-bind="text : Name"></span>
        <span data-bind="text : Description"></span>
        <span data-bind="text : GroupType"></span>    
        <span data-bind="text : Id"></span>
        <br/>
    </div>
    

    希望对你有帮助。

    【讨论】:

    • 嗨,Damien,谢谢你,我现在收到一个未捕获的错误:无法解析绑定。消息:ReferenceError:未定义组;绑定值:foreach:组我认为这是由于我定义“任务”并进行绑定的方式?
    • 你现在是什么意思?你说得对,我注意到 json 数据和你的 viewModel 之间存在一些差异。团体成为团体。请注意错字:)。
    • 啊 - 一直是那个错字。我之前尝试过foreach,但我想最后那个小“s”会有所不同。好地方 - 谢谢 Damien
    猜你喜欢
    • 1970-01-01
    • 2016-02-21
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 2019-09-13
    • 2014-06-01
    • 1970-01-01
    相关资源
    最近更新 更多