2013-11-15 48 views
0

我已創建一個igComboBox與它的數據源設置爲observableArray。當我向數組添加項目時,我希望組合框的數據源自動提取新值,而不必明確設置self.datasource:sourceListArray()。我怎樣才能做到這一點?IgniteUI組合框數據源更新與敲除

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 
    } 

回答

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/