Knockout.js 自动完成更新的源未反映在敲除JS中

Knockout.js 自动完成更新的源未反映在敲除JS中,knockout.js,autocomplete,jquery-ui-autocomplete,Knockout.js,Autocomplete,Jquery Ui Autocomplete,我已经用这个例子在我的淘汰JS项目中实现了autocomplete 它正在处理我最初填充的源数据。但后来我更改了应用自动完成功能的文本框焦点事件的源数据。但是自动完成弹出窗口没有填充更新的源数据。 装订是这样的 <input class="form-control" type="text" style="margin-right:15px;border:0px;" data-bind="value:ConditionData,event:{ focus:assignAutoComplet

我已经用这个例子在我的淘汰JS项目中实现了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">
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
                };
            });

        }
    }
我的视图模型是这样的

<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">
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

您正在替换observableArray,而不仅仅是更改其内容。被击倒的那个人已经不在了。你应该这样做

attribute.options(tokenListData);

为其添加新内容。

您正在替换observableArray,而不仅仅是更改其内容。被击倒的那个人已经不在了。你应该这样做

attribute.options(tokenListData);

给它新的内容。

如果我做了这个属性。选项(tokenListData);它是给错误选项不是一个函数无论你传递给函数的是什么,都需要已经有
选项
定义为
可观察数组
。关键是要创建一次而不是多次的
observableArlay
;它是给错误选项不是一个函数无论你传递给函数的是什么,都需要已经有
选项
定义为
可观察数组
。关键是要创建一次而不是多次的
observearray