[英]Setting select list value in Knockout.JS
我正在尝试使用从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"
}
}];
在官方的淘汰赛教程中,他们使用文本区域(我在提琴中包括了它)来显示数据在回发到服务器时的格式。 预加载的数据具有完全相同的格式。
无论如何, 这里是摆弄代码。
选择列表不会填充的原因是对象相等。 它们通过选项绑定绑定到availableEmployees可观察数组,而值绑定绑定到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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.