我创建了一个 igComboBox,其数据源设置为 observableArray。当我向数组添加项目时,我希望组合框的数据源自动提取新值,而无需显式设置 self.datasource:sourceListArray() 。我怎样才能实现这个目标?
self.sourceListArray = ko.observableArray();
$("#dataSource").igCombo({
allowCustomValue: false,
showDropDownButton: true,
enableClearButton: false,
dataSource: self.sourceListArray(),
nullText: "Select Data Source",
selectionChanged: self.dataSourceChanged
});
function PopulateSourceList(sourceList) {
for (var i = 0; i < sourceList.length; i++) {
self.sourceListArray.push(sourceList[i].ServiceName);
}
$("#dataSource").igCombo({ dataSource: self.sourceListArray() }); //don't want this
}
最佳答案
您当前的示例并未真正使用 Knockout support for the Ignite UI Combo 。查看此示例 KnockoutJS Binding ,相比之下,您正在以默认方式初始化 Combo,而不是经历 Knockout 绑定(bind)过程(我们的处理程序在此启动)。解决方案很简单 - 定义组合如下:
<div id="dataSource" data-bind="igCombo: {
allowCustomValue: false,
showDropDownButton: true,
enableClearButton: false,
dataSource: self.sourceListArray(),
nullText: 'Select Data Source',
selectionChanged: self.dataSourceChanged
}"></div>
然后一切都会正常 - http://jsfiddle.net/damyanpetev/athF2/
关于javascript - IgniteUI 组合框数据源更新与 knockout ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20010926/