2

「detailedStudent」と呼ばれるオブザーバブルにオブジェクトを配置する関数があります。この関数は、学生のフィールドの一部をモーダルで表示します。ここに問題があります:

  1. falseの値を持つフィールドから始めます。(IncludeInStudentSiteResults)
  2. ドロップダウンリストを表示する「detailedStudent」内に「student」オブジェクトを設定しました(モーダルポップアップをシミュレートします)。
  3. フィールドの値はtrueに設定されます。これは、ドロップダウンリストの最初のオプションです。

問題を再現するjsFiddleは次のとおりです。http://jsfiddle.net/62fDB/16/

4

3 に答える 3

1

ドロップダウンオプションの値は文字列です(ブール値ではありません)。このようにデータの初期化を更新します

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

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

または、次の投稿Knockoutjs(バージョン2.1.0)のソリューションを使用します。ブール値をバインドしてボックスを選択します

于 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 に答える