我有两个下拉菜单。我想在选择第一个下拉菜单时加载第二个下拉菜单。第一个下拉菜单加载正常,但第二个下拉菜单没有加载。没有控制台错误。
HTML语言
<select data-bind="
options: $root.availableTutorials,
value: $root.selectedTutorial,
optionsCaption: 'Choose tutuorial...',
event:{ change: $parent.onFirstChange }">
</select>
<select data-bind="
options: $root.availableTutorials2,
value: $root.selectedTutorial2,
optionsCaption: 'Choose tutuorial2...'">
</select>
JS系统
viewModel.selectedTutorial = ko.observable();
viewModel.selectedTutorial2 = ko.observable();
viewModel.availableTutorials = ko.observableArray([
'Academic', 'Big Data',
'Databases', 'Java Technologies',
'Mainframe', 'Management',
'Microsoft Technologies', 'Mobile Development',
'Programming', 'Software Quality'
]);
viewModel.onFirstChange = function () {
alert('first changed');
viewModel.availableTutorials2 = ko.observableArray([
'Academic', 'Big Data',
'Databases', 'Java Technologies',
'Mainframe', 'Management',
'Microsoft Technologies', 'Mobile Development',
'Programming', 'Software Quality'
]);
}
在选择第一个下拉菜单时,它会显示“首次更改”的警报,但不会绑定数据。如有任何帮助,将不胜感激。
1条答案
按热度按时间kzmpq1sx1#
为了使knockout能够更新期权,它需要从一开始就有一个可观察的数组(在
ko.applyBindings
时)。要更新期权,你可以通过调用它(myObsArray([])
而不是myObsArray = []
)写入该可观察的数组。第一个
我还建议不要使用
change
事件,而是使用subscribe
或computed
,它们使用selectedTutorial
作为触发器来加载第二个下拉列表的值。