如果有任何不正确,请原谅。发布我的第一个问题! 嗨,自从我开始在我的新项目中使用konckout以来,它已经有一段时间了。到目前为止,一切都很顺利,面临着两个基本问题
我尝试调试以检查ko是否正在更新“Item”对象的基础可观察“selectedOption”属性,幸运的是它正在做但是我改变了项目并且返回我的选定值并未保留 它会回到列表中的第一项。
我无法理解缺少的东西
任何人都可以解释为什么不保留selectedOption值以及为什么我不能预先选择我的下拉列表
提前致谢。
请在jsfiddle working sample中找到示例
function Item(data) {
//debugger;
this.name = data.name;
this.subItems = ko.observableArray(data.subItems);
this.selectedOption = ko.observable(data.option);
//someother properties of this object
}
function SubItem(data) {
//debugger;
this.name = data.name;
//someother properties of this object
}
function ViewModel() {
var self = this;
self.items = ko.observableArray(
[
new Item({
name: "Item 1",
option: "Sub 12",
subItems: [
"Sub 11",
"Sub 12",
"Sub 13",
"Sub 14"]
}),
new Item({
name: "Item 2",
option: "Sub 23",
subItems: [
"Sub 21",
"Sub 22",
"Sub 23",
"Sub 24"]
}),
new Item({
name: "Item 3",
option: "Sub 33",
subItems: [
"Sub 31",
"Sub 32",
"Sub 33",
"Sub 34"]
})
]);
self.selectedItem = ko.observable();
self.onChange = function(vm, event) {
debugger;
console.log(vm);
}
}
ko.applyBindings(new ViewModel());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<select data-bind="options: items, optionsText: 'name', value: selectedItem"></select>
<select data-bind="options: selectedItem() ? selectedItem().subItems : [],
value: selectedItem() ? selectedItem().selectedOption : '', event: {change: onChange}"></select>
<span data-bind="text: selectedItem() ? selectedItem().selectedOption : ''"></span>