我有这个视图模型从实体famework获取数据。我能够成功地将它从JSON转换为数组,但它是不可观察的。我已经尝试创建一个具有可观察属性的模型,然后用for填充for,但这似乎不起作用。我也尝试使用ko.mapping.fromJSON,它似乎在服务端正常工作,但它在视图中总是为空。
function(logger, system, router, employeeService) {
var EmployeeDetails = ko.observableArray([]);
Activate Function -
var activate = function () {
return GetEmployeeDetails(),GetTermList();
};
var vm = {
activate: activate,
FindID: ko.observable(),
EmployeeDetails: EmployeeDetails
}
};
function GetEmployeeDetails() {
return employeeService.getemployeeDetails(EmployeeDetails);
}
//这是我的employeeService类中的函数
var getEmployeedetails = function(employeeDetailsOb) {
var jsonfromServer;
$.ajax({
type: "POST",
dataType: "json",
url: "/api/employee/getAllDetails/",
data: '{}',
success: function(data) {
jsonfromServer = $.parseJSON(data);
},
error:
{ //error stuff})
Return employeeDetailsOb(jsonFromServer);
}
答案 0 :(得分:0)
假设您在尝试从该调用实际成功返回之前尝试从getEmployeeDetails(...)返回EmployeeDetails()对象,请尝试将vm.EmployeeDetails初始化置于您的成功处理程序中:
success: function(data) {
jsonfromServer = $.parseJSON(data);
for (var i = 0; i < jsonFromServer.list.length; ++i)
{
vm.EmployeeDetails.push(jsonFromServer.list[i]);
}
},
答案 1 :(得分:0)
我认为一旦将EmployeeDetails设置为可观察数组,您就可以像这样设置可观察数组数据:
vm.EmployeeDetails(jsonfromServer.list);