我创建了一个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
}
答案 0 :(得分:2)
您当前的示例并未真正使用Knockout support for the Ignite UI Combo。看看KnockoutJS Binding的这个示例,相比之下,您正在以默认方式初始化Combo,而不是通过Knockout绑定过程(我们的处理程序启动)。解决方案很简单 - 像这样定义组合:
<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/