淘汰赛很新,所以它可能非常明显,但我很难找到有关它的具体信息。
我尝试进行级联下拉。第一个选择是填充服务器端,而不是Knockout,所以我认为我必须像这样绑定它:
<select
data-bind="value: CompanyId"
id="CompanyId"
name="CompanyId"
onchange="GetEmployees();">
<option value="">...</option>
...
</select>
然后,在我的控制器中:
function CascadingDdLViewModelEmployeeEdit() {
this.EmployeeList = ko.observableArray([]);
}
var objVMEmployeeEdit = new CascadingDdLViewModelEmployeeEdit();
ko.applyBindings(objVMEmployeeEdit);
function GetEmployees() {
objVMEmployeeEdit.EmployeeList([]);
var CompanyId = $("#CompanyId").val(); // EMPTY
// ...
});
}
但$(“#CompanyId”)。val()为空。我哪里错了?
好的,我明白了。值数据绑定创建一个具有相同名称的变量(CompanyId),我只需要使用它。
function GetEmployees() {
objVMEmployeeEdit.EmployeeList([]);
var route = "/Company/GetEmployees/" + CompanyId;
// ...
});
}
但现在我得到之前选择的值,而不是触发事件的值。
答案 0 :(得分:1)
对您的编辑做出回应,请尝试以下操作 - 在viewmodel中进行订阅而不是使用onchange事件:
CompanyId.subscribe(function (newValue){
GetEmployees(newValue);
}
并更改GetEmployees以获取新值并使用它而不是CompanyId。
function GetEmployees(newValue) {
objVMEmployeeEdit.EmployeeList([]);
var route = "/Company/GetEmployees/" + newValue;
// ...
});
}