【问题标题】:Using custom knockoutjs select binding with standard select bindings as well将自定义 knockoutjs 选择绑定与标准选择绑定一起使用
【发布时间】:2015-07-14 12:12:16
【问题描述】:

我正在尝试将自定义 knockoutjs 绑定与标准绑定相结合。虽然我已经能够找到相关的solution

ko.bindingHandlers.parentAreaComboBox = {

initialised: false,
init: function (element, valueAccessor, allBindingsAccessor, viewModel, context) {

    viewModel.parentAreas.subscribe(function (newParentAreas) {

        if (newParentAreas && newParentAreas.length > 0) {

            if (ko.bindingHandlers.parentAreaComboBox.initialised) {
                return;
            }
            ko.applyBindingsToNode(element, {
                options: viewModel.parentAreas,
                optionsCaption: 'Choose...',
                optionsText: 'Label',
                value: viewModel.selectedParentArea
            });
            $(element).chosen({});
            ko.bindingHandlers.parentAreaComboBox.initialised = true;
        }
    });
  }
};

但我无法使其在 mine 上运行。我在这里做错了什么?

【问题讨论】:

  • 首先,我收到一个投诉,即引导程序需要 jquery,这意味着您的外部资源以错误的顺序加载。您也不要为组合框规范关闭大括号。
  • 感谢指点,已更正that 仍然无法正常工作
  • 不相关,但如果您使用的是 Knockout 3+,您可能希望在您的 init 函数中使用 context.$data 而不是 viewModel,因为 Knockout 文档指出 viewModel 参数是 @ 987654324@

标签: jquery knockout.js custom-binding


【解决方案1】:

使用浏览器中的调试控制台(按 F12)以及 JSFiddle 中的 JSHint 按钮。您的 VM 构造函数无效。解决此问题后,您会注意到您正在尝试在不可观察的事物上使用 subscribe

【讨论】:

  • 感谢您,并为我提出的问题质量不佳表示歉意,我从version 尝试过,但我无法更进一步
  • 这篇关于自定义绑定的文章很有帮助。阅读全文,但特别要查看“简单包装器绑定”部分knockmeout.net/2011/07/another-look-at-custom-bindings-for.html
  • 经过一番努力,我已经能够实现this..感谢您提醒我订阅。
  • 我仍然对如何在我的自定义活页夹中创建更新功能感到困惑。
  • 也许您应该提出一个新问题,说明您希望绑定做什么,然后发布您拥有的最新代码。
猜你喜欢
  • 2013-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2012-10-09
  • 1970-01-01
相关资源
最近更新 更多