【发布时间】:2016-01-01 19:30:15
【问题描述】:
我正在使用带有实体框架的淘汰赛 js 和 asp.net mvc (vs2013) 首先,我有一个索引页面(masterViewModel),我在其中声明了所有子视图模型
此外,还有一个视图模型和一个函数,用于对服务器端进行 ajax 调用、从服务器端收集信息、插入到可观察数组中并将该数组的元素绑定到视图。 来自服务器端的数据显示,三个对象,绑定有效,但不是将三个不同的辅助驱动程序名称绑定到视图,而是在循环后绑定相同的值三次(对象 2) 通过对象 0 和 1 。目前我目前的输出是
史密斯 史密斯 史密斯
这是我在淘汰赛中对服务器端的调用
function populateDrivers() {
if (!masterViewModel.isAuthenticated()) return;
$.when(getSecureData("/api/Drivers/?driverId="))
.done(function (resp) {
masterViewModel.vehicleDetail.assistantDriverList(resp.assistantDriverList)
ko.utils.arrayMap(resp.assistantDriverList, function (obj) {
//ko.utils.arrayForEach(resp.assitantDriverList, function (obj)
//arrayMap
masterViewModel.FleetInfoVM.vehicleDetail.assistantDriverName(obj.assistantDriverName);
masterViewModel.FleetInfoVM.vehicleDetail.carRegNumber(obj.CarRegNumber);
masterViewModel.FleetInfoVM.vehicleDetail.make(obj.Make);
masterViewModel.FleetInfoVM.vehicleDetail.Model(obj.Model);
});
});
}
这是我在 html 中的绑定
<table style="table-layout: fixed" class="table table-striped table-bordered">
<thead>
<tr>
<th>Assistant Name</th>
</tr>
</thead>
<tr>
<td data-bind="text: $root.FleetInfoVM.vehicleDetail.assistantDriverName"> </td>
<td class="td-actions">
<a class="btn btn-small" data-bind="click: $root.vehicleDetail.edit" title="Edit">
<i class="icon-edit"></i>
</a>
<a class="btn btn-small" ">
</a>
<a class="btn btn-small">
</a>
</td>
</tr>
</tbody>
</table>
这些是我的视图模型
function MasterViewModel() {
var pvm = this;
mvm.loginVM = new LoginViewModel();
mvm.VehicleVM = new vehicleViewModel();
mvm.topManagerVM = new TopManagerViewModel();
mvm.FleetInfoVM = new FleetInfoViewModel
}
MasterViewModel = new MasterViewModel();
ko.applyBindings(MasterViewModel, document.getElementById("htmlTop"));
FleetInfoViewModel
=========================================================================
function FleetInfoViewModel
{
var fiv = this;
fiv.branch id = ko.observable(0);
fiv.branch name = ko.observable(0);
fiv.location = ko.observable("");
fiv.driverDetail = new DriverViewModel();
fiv.vehicleDetail = new vehicleViewModel();
}
function DriverViewModel() {
var drv = this;
drv.driverId = ko.observable(0);
drv.driverName = ko.observable("");
}
function vehicleViewModel{
vvm.assitantDriverList = ko.observable([]);
vvm.assistantDriverName = ko.observable("");
vvm.regNumber = ko.observable(0);
vvm.make = ko.observable("");
vvm.model = ko.observable("");
}
【问题讨论】:
-
那太长太宽泛了。首先隔离问题(服务器是否正确地完成了它的工作?客户端是否得到了它应该得到的东西?等等......),然后再次询问
-
是的,这是因为其他名字出现然后消失,留下姓氏显示三次,例如 smith smith smith 而不是 Jones , Jameson , Smith
-
您的
foreachhtml 绑定在哪里?
标签: javascript asp.net-mvc knockout.js single-page-application