繁体   English   中英

在Knockout.JS中设置选择列表值

[英]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

的jsfiddle

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM