KnockoutJS-根据第一个组合框中选择的值填充第二个组合框
KnockoutJS - populating second combobox based on value selected in first combobox
下面是我编写的第一段knockoutjs代码。在下面的代码中,我有两个列表框。第一个是在页面加载后填充的,并且运行良好。接下来我想做的是,当用户从cmbDataSets列表框中选择一个项目时,我想进行第二次ajax调用来填充我的视图模型的"instruments"属性。稍后,当用户选择一个仪器时,我想再次调用以获取将在网格中显示的数据(使用slickgrid.js)
现在,我想了解实现这一目标的方法或最佳实践是什么。我想我可以简单地在第一个列表框中添加普通的html/javascript选择更改事件处理程序来实现这一点。。。但我不确定这是否是推荐的方式(我知道这不是MVVM方式)。我觉得由于selectedDataSet是一个可观察的数据集,我应该能够将其链接到事件处理程序。。不我的问题是怎么做?我可以在我的视图模型上定义一个onSelectedDataSetChange方法吗?如果可以,我如何将它"挂钩"到cmbDataSets控件的实际选择更改中?
<div class="container">
<label for="cmbDataSets">Select list:</label>
<select id="cmbDataSets" data-bind="options: dataSets, optionsText:'descr', value:selectedDataSet, optionsCaption:'Choose' " class="form-control"></select>
<label for="cmbInstruments">Select instrument:</label>
<select id="cmbInstruments" data-bind="options: instruments, optionsText:'intrument', value:selectedInstrument, optionsCaption:'Choose' " class="form-control"></select>
</div>
<script type="text/javascript">
$(document).ready(function () {
var viewModel = {
dataSets: ko.observableArray(),
instruments: ko.observableArray(),
selectedDataSet: ko.observable(),
selectedInstrument: ko.observable()
}
$.ajax({
url: '/ds/sets',
type: "GET",
dataType: "json",
success: function (data) {
debugger;
console.log(data);
viewModel.dataSets(data);
}
});
ko.applyBindings(viewModel);
});
</script>
您可以订阅所选的第一个框Optionobservable,并在其更改时进行调用。
selectedOption = ko.observable();
selectedOption.subscribe(function (newValue) {
secondBoxSource(ajaxCallFunction(newValue));
});
其中,ajaxCallFunction()是用于获取第二个框的数据的函数,newValue是第一个框中新选择的值。
Mike。
检查此代码,以便在视图中设置更改事件:
<select data-bind="event: { change: selectionChanged }"></select>
然后是ViewModel中的一个问题:
selectionChanged: function(event) { }
这就是你要找的吗?除此之外,我还有一个小建议——SelectedDataSet和selectedInstrument也可以是可观察的数组。不同的是,您将不使用"value"biding,而是使用"selectedOptions"biding。当你有多种选择时,这会对你有所帮助,但我认为,即使是单一选择,这也是一个更好的选择。
- 以编程方式填充组合框道场 (1.8) 的最佳方法是什么?
- 类型错误:url未定义extjs 4正在填充组合框
- Jqgrid动态组合框填充不起作用
- 组合2个数组,如果它们不重复,则用0填充
- ZK:如何使用JavaScript在客户端填充ZK组合框
- KnockoutJS-根据第一个组合框中选择的值填充第二个组合框
- 如何从选定的组合框中填充文本框
- 当表单控件选项具有多个参数时,如何在组合框中填充所选项目
- 使用用户输入填充组合框
- jQuery 运行函数组合框填充多个组合框
- DHTMLX 动态填充组合
- 在 AngularJS 中填充组合框
- 用 JSON 填充 ExtJS 组合框
- 如何根据 html 页面中组合框中的值填充文本框的值
- Jquery组合框填充文本框
- 如何组合来自三个不同字段的值,并仅在所有三个字段都填充值时才将其设置为隐藏字段
- JavaScript 用 ajax 填充组合框,但在 C# 中,所选值为 null
- 使用组合框填充另一个组合框,以便用户可以运行查询
- 如何从多维数组填充列表框(组合框)
- 根据组合框中的选定值自动填充表单,使用 Jquery 和 Ajax