我正在尝试使用从jQuery GET请求中检索的JSON数据填充输入表(文本框和选择列表)。对于示例,我使用一些数据预先设置变量,而不是生成get请求。文本框输入正确填充数据,但不会填充选择列表。
以下是敲除接收并放置在表格中的数据的示例
var returnedData = [{
"taskID": "1",
"taskName": "test task",
"taskDetails": "details",
"employee": {
"employeeID": "1",
"employeeName": "John"
}
}, {
"taskID": "2",
"taskName": "another test",
"taskDetails": "some more details",
"employee": {
"employeeID": "2",
"employeeName": "Jane"
}
}];
在官方淘汰教程中,他们使用textarea(我将其包含在小提琴中)来显示数据在被发布回服务器时的格式。预加载的数据格式完全相同。
无论如何,here is a fiddle带有代码。
答案 0 :(得分:1)
选择列表不会填充的原因是对象相等。它们绑定到带有选项绑定的availableEmployees observable数组,并且值绑定是Employee,但是当您设置每个任务的employee属性时,您将其设置为具有相同属性和值的新对象,在javascript中不相等。我所做的实际上是搜索(我的例子有一个可怕的循环搜索,只是为了告诉你我的意思)为你的可用员工列表中的匹配员工,并将员工设置为该实际对象,而不是即将到来的对象从任务的信息。看看这个:
var returnedData = [{
"taskID": "2",
"taskName": "test task",
"taskDetails": "details",
"employee": self.availableEmployees()[1]
}, {
"taskID": "5",
"taskName": "another test",
"taskDetails": "some more details",
"employee": self.availableEmployees()[2]
}];
这是因为在javascript中:
var a = { foo: 1, bar: 'baz'};
var b = { foo: 1, bar: 'baz'};
console.log(a == b); // false