2

我有一个函数可以将一个对象放入一个名为“detailedStudent”的可观察对象中,它将以模式显示学生的一些字段。这是问题所在:

  1. 我从一个值为 false 的字段开始。(包括InStudentSiteResults)
  2. 我在“detailedStudent”中设置了“学生”对象,该对象显示下拉列表(模拟模式弹出窗口)。
  3. 该字段的值设置为 true,这是下拉列表中的第一个选项。

这是一个重现问题的 jsFiddle:http: //jsfiddle.net/62fDB/16/

4

3 回答 3

1

下拉选项值是字符串(不是布尔值)。像这样更新您的数据初始化

...
"IncludeInStudentSiteResults": "false",
...

JSfiddle:http: //jsfiddle.net/62fDB/22/

或使用以下帖子中的解决方案Knockoutjs (version 2.1.0): bind boolean value to select box

于 2012-06-05T15:11:36.017 回答
0

这是你的版本:

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/

于 2012-06-05T14:44:44.173 回答
0

这是一个包含我的问题答案的小提琴。我不喜欢我必须编写自定义绑定,但替代方法是使用枚举而不是数据绑定到布尔值。

http://jsfiddle.net/ekyDh/2/

于 2012-06-05T15:30:48.273 回答