Javascript 我的viewmodel不反映我的选择

Javascript 我的viewmodel不反映我的选择,javascript,knockout.js,data-binding,cascadingdropdown,Javascript,Knockout.js,Data Binding,Cascadingdropdown,我在一个列表中使用了级联dowpdowns。 用户界面工作正常,但基础viewmodel与用户选择不符 我有以下html: <ul data-bind="foreach: selectedExams"> <li> <select data-bind="options: $parent.availableExams, optionsCaption: 'Choisir un type...', optionsText: 'examTypeName', value:

我在一个列表中使用了级联dowpdowns。 用户界面工作正常,但基础viewmodel与用户选择不符

我有以下html:

<ul data-bind="foreach: selectedExams">
 <li>
  <select data-bind="options: $parent.availableExams, optionsCaption: 'Choisir un type...', optionsText: 'examTypeName', value: examtype"></select>
  <select data-bind="options: exams, optionsCaption: 'Choisir un examen...' , optionsText: 'examName',value: exam, enable:exams().length"></select>
  <a href="#" data-bind="click: $parent.remove">Remove</a>
 </li>
</ul>
<button data-bind="click: add">Add</button>
<pre data-bind="text: ko.toJSON($root.selectedExams, null, 2)"></pre>
对于3行不同的选择,结果如下:

[
  {},
  {},
  {}
]
例如,我希望看到:

[
  {"SCAN","SCOEUR"},
  {"RX", "RBRAS"},
  {"IRM", "ITETE"}
]
这可能是一个数据绑定问题,但我不知道从哪里开始调试这种问题

请注意,我正在引导网格中使用此代码

谢谢你的帮助。
提前感谢。

问题是您在
selectedExam
构造函数中缺少
self
的定义。当前,您的
self
实际上引用的是
窗口(全局上下文),因此最终返回的是空对象

试试这个:

var selectedExam = function () {
    var self = this; // <-- add this

    self.examtype = ko.observable(undefined);
    self.exam = ko.observable(undefined);
    self.exams = ko.computed(function () {
        if (self.examtype() == undefined || self.examtype().exams == undefined)
            return [];
        return self.examtype().exams;
    });
}
var selectedExam=函数(){

var self=this;//问题在于,您在
selectedExam
构造函数中缺少
self
的定义。目前,您的
self
实际上是引用
窗口(全局上下文),因此返回的是空对象

试试这个:

var selectedExam = function () {
    var self = this; // <-- add this

    self.examtype = ko.observable(undefined);
    self.exam = ko.observable(undefined);
    self.exams = ko.computed(function () {
        if (self.examtype() == undefined || self.examtype().exams == undefined)
            return [];
        return self.examtype().exams;
    });
}
var selectedExam=函数(){
var self=这个//