【问题标题】:array observable with content observable and jqAutocomplete具有内容可观察和 jqAutocomplete 的可观察数组
【发布时间】:2016-01-25 02:14:10
【问题描述】:

我正在使用带有 Ryan Niemeyer 的插件 jqAutocomplete 的 Knockout 3。我对这个模型有疑问:

var ViewModel = function() {
    var self = this;


    self.myOptionsObs = ko.observableArray([
        { id: ko.observable(1), name: ko.observable("item 1 o"), description: ko.observable("item label 1 o") },
        { id: ko.observable(2), name: ko.observable("item 2 o"), description: ko.observable("item label 2 o") },
        { id: ko.observable(3), name: ko.observable("item 3 o"), description: ko.observable("item label 3 o") }
    ]);

    self.myValueObs = ko.observable();

};

ko.applyBindings(new ViewModel());
<input data-bind="jqAuto: { source: myOptionsObs,  value: myValueObs, inputProp: 'name', template: 'itemTmpl'  }" />          

如你所见,有一个observable数组,每个元素也是一个observable

自动完成 效果不佳。正如您在Fiddle 中看到的,左列 有一个可观察的数组,但它的元素不可观察。如果您单击左侧框并写一些东西,则会出现一个选项列表。

但是在右列,你有相同的,但元素都是可观察的。如果你点击右边的框并写一些东西,当列表出现时,如果你上下移动光标,你会看到'name'行被删除并用零填充。

我必须在我的数据绑定属性中更改什么?

这个问题与this question有关。

我不得不说这个solution 对我来说没问题。但更新后的插件没有

谢谢!!

【问题讨论】:

  • 我想添加一个标签 'knockout-jqAutocomplete' 来纪念 Ryan Niemeyer,但我没有足够的声誉来创建一个。对不起,瑞恩。但是非常感谢您的绑定,太好了!!

标签: jquery-ui knockout.js autocomplete


【解决方案1】:

jqAutoComplete 插件未设置为与可观察属性一起使用(尽管无需太多工作即可对其进行增强)。

目前,我认为您最好的选择是创建一个始终返回您的选项的简单和最新版本的计算。

self.myOptionsObs.plain = ko.computed(function() {
   return ko.toJS(self.myOptionsObs); 
});

示例:http://jsfiddle.net/rniemeyer/45cepL9b/

我将尝试看一下有关支持可观察属性的一些观点。不应该进行太多更改。

【讨论】:

  • 非常感谢。我会试试看。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-09
  • 2012-04-20
  • 1970-01-01
  • 1970-01-01
  • 2015-08-11
  • 2017-11-25
  • 2015-10-05
相关资源
最近更新 更多