【问题标题】:jQuery.combobox and Knockout JS--Variable Selector Not FiringjQuery.combobox 和 Knockout JS--变量选择器未触发
【发布时间】:2011-12-31 14:19:29
【问题描述】:

我将 Knockout JS 与 jQuery 的组合框扩展结合使用:http://source.dellsala.com/jquery-combobox/demo/

视图模型初始化时我有一个自定义绑定事件:

 ko.bindingHandlers.dataOptions = {
              init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
                  var id = ko.utils.unwrapObservable(valueAccessor());
                  var vm = viewModel;
                  var data = vm.Options();
                  var objArray = new Array();
                  $.each(data, function (i) {
                      var obj = new gv.objectType(data[i].attributeId(), data[i].Name());
                      objArray.push(obj);
                  });

                  var sel = '#' + vm.Id();
                  $(sel).combobox(objArray); 
                  //$(element) didn't work as a selector.
                  //Only the actual string selector works: $('#someid')
              }
          };

出于某种疯狂的原因,我无法使用 $(element) 或动态选择器(基于变量)来生成组合框:

$(element).combobox(objArray);

但是,如果我直接输入字符串选择器:

$('#myId').combobox(objArray);

它工作正常。任何标准的 jQuery 方法也适用于动态选择器:

$(element).val('hello world');

所以我认为这是组合框插件的问题。问题是,在查看了几个之后,我真的很想使用这个特定的组合框插件。

有什么想法吗?谢谢!

【问题讨论】:

    标签: jquery json knockout.js


    【解决方案1】:

    您缺少处理程序的更新部分。这是绑定变量的值改变值时调用的部分。

    $(element) 不起作用是意料之外的。我在所有自定义绑定中都使用了它,并且效果很好。

    详情请参阅http://knockoutjs.com/documentation/custom-bindings.html

    您能否创建一个 jsfiddle 演示,以便我们了解正在发生的事情,然后提供修复。

    【讨论】:

    • 已解决:在应用绑定之前,您无法动态触发某些插件。我已经毫无乐趣地尝试了更新部分。上面的答案对我有用。
    【解决方案2】:

    已解决:您无法动态触发某些插件(在 Knockout 之外),直到您将绑定应用于淘汰赛元素。一定是 KO 在绑定应用之前不会将元素注册到 DOM。

    【讨论】:

      猜你喜欢
      • 2012-09-29
      • 1970-01-01
      • 1970-01-01
      • 2018-03-10
      • 1970-01-01
      • 1970-01-01
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多