0
反映我一直在使用這個例子在我的淘汰賽JS項目實施自動完成自動完成更新源沒有在淘汰賽JS
http://cameron-verhelst.be/blog/2014/04/20/knockoutjs-autocomplete/
它正在與我最初填充的源數據。但稍後,我更改了應用了我的自動完成功能的文本框的焦點事件上的源數據。但是,自動完成彈出窗口未填充更新後的源數據。 通過結合是這樣
<input class="form-control" type="text" style="margin-right:15px;border:0px;" data-bind="value:ConditionData,event:{ focus:assignAutoCompleteArray },autoComplete: {selected:selectedOption, options:options}" placeholder="Key">
而且我通過這種方式改變我的源
self.assignAutoCompleteArray = function (attribute)
{
debugger;
var attr = attribute;
var tokenListData = ruleTokenList.map(function (element) {
return {
label: element.label,
value: element.value,
object: element
};
});
attribute.options = ko.observableArray(tokenListData);
}
我的視圖模型是這樣的
var criteria = function() {
debugger;
var self = this;
self.ID = ko.observable();
self.ConditionData = ko.observable();
self.Value = ko.observable();
self.AndOr = ko.observable();
self.Operator = ko.observable();
self.Children = ko.observableArray([]);
self.AndOrList = ko.observableArray([{ key: 'And', value: 'And' }, { key: 'Or', value: 'Or' }]);
self.operators = ko.observableArray(operatorList);
self.IsActive = ko.observable();
self.IsVisibleAddChild = ko.observable(false);
self.selectedOption = ko.observable('');
self.options = ruleTokenList.map(function (element) {
return {
label: element.label,
value: element.value,
object: element
};
});
self.AddChildAttribute = function() {
var newAttr = new criteria();
self.Children.push(newAttr);
}
self.SaveFilter = function (attribute) {
self.IsVisibleAddChild(true);
}
self.assignAutoCompleteArray = function (attribute)
{
debugger;
var self = this;
var tokenListData = ruleTokenList.map(function (element) {
return {
label: element.label,
value: element.value,
object: element
};
});
}
}
問題是什麼
謝謝 Utpal
如果我這樣做attribute.options(tokenListData);它給錯誤選項不是函數 – Utpal
無論你傳遞給函數需要什麼'options'都被定義爲'observableArray'。關鍵是你創建'observableArray'而不是多次。 –