【发布时间】:2015-09-17 14:33:04
【问题描述】:
对这个很陌生,所以请原谅我的无知。 . .
我有一个有效的 JSON 请求和绑定来显示记录。这很好用——我的模型有一个主数据表,其中包含一个静态数据表的外键。所以表访问包含用户的 int 外键,我的视图模型返回用户全名。
下一步是查看用户将如何更新查看记录,因此我需要返回用户全名作为选择下拉列表中的选定选项。我可以看到很多关于使用 JSON 调用填充下拉列表的文章,但它们似乎是孤立的,这对于“添加新”场景来说很好,但不适用于“编辑”场景。
所以这是我绑定的视图的作用;
<tbody data-bind="foreach: visitsPast">
<tr style="font-size:11px;" data-bind="click: $parent.selectItemP" class="rowlink" data-toggle="modal" data-target="#visitModal">
<td data-bind="text: $data.visitdate"></td>
<td data-bind="text: $data.visitstarttime"></td>
<td data-bind="text: $data.visitendtime"></td>
<td data-bind="text: $data.schoolname"></td>
<td data-bind="text: $data.username"></td>
</tr>
</tbody>
我的视图模型如下;
function visitPast(visitdate, visitstarttime, visitendtime, schoolname, username, visitoffsitetime) {
var self = this;
self.visitdate = ko.observable(visitdate);
self.visitendtime = ko.observable(visitendtime);
self.schoolname = ko.observable(schoolname);
self.username = ko.observable(username);
self.visitstarttime = ko.observable(visitstarttime);
self.visitoffsitetime = ko.observable(visitoffsitetime);
}
function VisitPast() {
var self = this;
self.visitsPast = ko.observableArray([]);
self.selectedItemP = ko.observable();
self.selectItemP = function (item) {
self.selectedItemP(item);
}
$('#loadingPast').show()
$.getJSON( "/api/visits/UserId/past", function (data) {
self.visitsPast.removeAll;
$.each(data, function (key, val) {
self.visitsPast.push(new visitPast(moment(val.visitdate).format('DD/MM/YYYY'), val.visitstarttime, val.visitendtime, val.schoolname, val.userfullname, val.visitoffsitetime));
});
$('#loadingPast').hide()
});
}
$(document).ready(function () {
var oVisitPast = new VisitPast();
ko.applyBindings(oVisitPast, document.getElementById('visitPast'));
function onLoopPast() {
var self = oVisitPast;
$.getJSON("/api/visits/UserId/past", function (data) {
self.visitsPast.removeAll();
$.each(data, function (key, val) {
self.visitsPast.push(new visitPast(moment(val.visitdate).format('DD/MM/YYYY'), val.visitstarttime, val.visitendtime, val.schoolname, val.userfullname, val.visitoffsitetime));
});
});
}
onLoopPast;
setInterval(onLoopPast, 30000);
});
提前致谢
【问题讨论】:
-
我不明白你的问题。你想做什么?
-
Fabio - 我希望能够显示访问记录以进行编辑。这对于文本输入来说很好,但是对于用户名字段,我想返回所有用户的列表作为下拉列表,其中包含正确的当前选择的用户。
标签: json asp.net-mvc knockout.js