数据绑定嵌套 json 数据使用来自网络的敲除 api asp.net mvc
data bind nested json data using knockout from web api asp.net mvc
我正在尝试通过网络 api 调用对一些嵌套的 json 进行数据绑定。我是否需要为嵌套数据创建另一个 observable 或在之后进行 knockout 处理。我有一个从 api 返回的作业对象,该作业有一个作业列表。我想绑定 jobId 和 joblistID。我只是在寻找一种简单的方法来做到这一点 json code
[
{
"$id":"1",
"JobID":1,
"JobsListID":1,
"BookingID":1,
"TimeAllowed":20,
"TimeTaken":22,
"Comments":"Some comments",
"Status":"complete",
"Notes":null,
"TimeStarted":"2014-11-04T09:00:00",
"Difficulty":1,
"CompleteDate":"2014-11-04T09:22:00",
"booking":null,
"jobs_mechanics":[],
"jobslist": {
"$id":"2",
"JobsListID":1,
"JobCategoryID":1,
"Description":"Change Tyres",
"Name":"Tyres",
"jobs": [
{"$ref":"1"}
],
"jobscategory":null,
"model_jobslist":[]
},
"timessheets":[]
}
]
html
<table class="table table-bordered table-hover">
<tr>
<th>Job ID</th>
<th>JobList ID</th>
</tr>
<tbody data-bind="foreach: Jobs">
<tr>
<td data-bind="text: JobID"></td>
</tr>
工作列表 ID 或名称或任何来自
工作列表去这里只是为了
了解如何显示嵌套数据
</td>
</tr>
</table>
script code
<script>
var ViewModel = function () {
var self = this;
self.Jobs = ko.observableArray();
self.error = ko.observable();
var JobsApi = 'http://localhost:54155/api/mechanicphone';
function ajaxHelper(uri, method, data) {
self.error(''); // Clear error message
return $.ajax({
type: method,
url: uri,
dataType: 'json',
contentType: 'application/json',
data: data ? JSON.stringify(data) : null
}).fail(function (jqXHR, textStatus, errorThrown) {
self.error(errorThrown);
});
}
function getAllJobs() {
ajaxHelper(JobsApi, 'GET').done(function (data) {
self.Jobs(data);
});
}
getAllJobs();
};
ko.applyBindings(new ViewModel());
您只需使用 foreach
,然后使用 jobslist.JobsListID
获取 joblistId,如下所示:
<table>
<thead>
<tr>
<th>Job ID</th>
<th>JobList ID</th>
</tr>
</thead>
<tbody data-bind="foreach: Jobs">
<tr>
<td data-bind="text: JobID"></td>
<td data-bind="text: jobslist.JobsListID"></td>
</tr>
</tbody>
</table>
我正在尝试通过网络 api 调用对一些嵌套的 json 进行数据绑定。我是否需要为嵌套数据创建另一个 observable 或在之后进行 knockout 处理。我有一个从 api 返回的作业对象,该作业有一个作业列表。我想绑定 jobId 和 joblistID。我只是在寻找一种简单的方法来做到这一点 json code
[
{
"$id":"1",
"JobID":1,
"JobsListID":1,
"BookingID":1,
"TimeAllowed":20,
"TimeTaken":22,
"Comments":"Some comments",
"Status":"complete",
"Notes":null,
"TimeStarted":"2014-11-04T09:00:00",
"Difficulty":1,
"CompleteDate":"2014-11-04T09:22:00",
"booking":null,
"jobs_mechanics":[],
"jobslist": {
"$id":"2",
"JobsListID":1,
"JobCategoryID":1,
"Description":"Change Tyres",
"Name":"Tyres",
"jobs": [
{"$ref":"1"}
],
"jobscategory":null,
"model_jobslist":[]
},
"timessheets":[]
}
]
html
<table class="table table-bordered table-hover">
<tr>
<th>Job ID</th>
<th>JobList ID</th>
</tr>
<tbody data-bind="foreach: Jobs">
<tr>
<td data-bind="text: JobID"></td>
</tr>
工作列表 ID 或名称或任何来自
工作列表去这里只是为了
了解如何显示嵌套数据
</td>
</tr>
</table>
script code
<script>
var ViewModel = function () {
var self = this;
self.Jobs = ko.observableArray();
self.error = ko.observable();
var JobsApi = 'http://localhost:54155/api/mechanicphone';
function ajaxHelper(uri, method, data) {
self.error(''); // Clear error message
return $.ajax({
type: method,
url: uri,
dataType: 'json',
contentType: 'application/json',
data: data ? JSON.stringify(data) : null
}).fail(function (jqXHR, textStatus, errorThrown) {
self.error(errorThrown);
});
}
function getAllJobs() {
ajaxHelper(JobsApi, 'GET').done(function (data) {
self.Jobs(data);
});
}
getAllJobs();
};
ko.applyBindings(new ViewModel());
您只需使用 foreach
,然后使用 jobslist.JobsListID
获取 joblistId,如下所示:
<table>
<thead>
<tr>
<th>Job ID</th>
<th>JobList ID</th>
</tr>
</thead>
<tbody data-bind="foreach: Jobs">
<tr>
<td data-bind="text: JobID"></td>
<td data-bind="text: jobslist.JobsListID"></td>
</tr>
</tbody>
</table>