knockout.js数据绑定到下拉框将覆盖原始值
我有一个函数将一个对象放入一个名为“detailedStudent”的可观察对象中,该对象将在模态中显示一些学生的字段。这里的问题:knockout.js数据绑定到下拉框将覆盖原始值
- 我开始与具有假值的字段。 (IncludeInStudentSiteResults)
- 我在显示下拉列表(模拟模态弹出窗口)的'detailedStudent'内设置'student'对象。
- 该字段的值被设置为true,这是下拉列表中的第一个选项。
下面是再现问题的jsfiddle:http://jsfiddle.net/62fDB/16/
下拉菜单选项值是字符串(不是布尔值)。 更新您的数据初始化像这样
...
"IncludeInStudentSiteResults": "false",
...
的jsfiddle:这里http://jsfiddle.net/62fDB/22/
或从下面的帖子Knockoutjs (version 2.1.0): bind boolean value to select box
这是您的版本:
function StudentViewModel() {
var self = this;
this.students = ko.observableArray([]);
this.detailedStudent = ko.observable();
this.clickMe = function(student) {
alert(student.IncludeInStudentSiteResults());
self.detailedStudent(student);
alert(student.IncludeInStudentSiteResults());
}
}
尝试使用我的版本:
function StudentViewModel() {
var self = this;
this.students = ko.observableArray([]);
this.detailedStudent = ko.observable();
this.clickMe = function(student) {
alert(student.IncludeInStudentSiteResults());
self.detailedStudent(ko.observable(student));
alert(student.IncludeInStudentSiteResults());
}
}
的jsfiddle:http://jsfiddle.net/62fDB/23/
与您的版本的问题是,detailedStudent永远不会被束缚,从而下拉页面上永远不会出现。 –
回答和jsfiddle更新,请现在尝试 –
使用您的更新的修复程序,我得到一个很常见的控制台JavaScript错误:无法解析绑定。消息:ReferenceError:IncludeInStudentSiteResults未定义;绑定值:值:IncludeInStudentSiteResults –
这当然是有帮助的,并且朝着正确的方向迈出了一步,但布尔值会自动作为布尔值序列化为JSON。有布尔值作为下拉选项值的首选方法吗? –
这可能有助于[Knockoutjs(版本2.1.0):绑定布尔值来选择框](http://stackoverflow.com/questions/10510683/knockoutjs-version-2-1-0-bind-boolean-value-to - 选择框) –