【问题标题】:Limit Number of Items in ObservableArray限制 ObservableArray 中的项目数
【发布时间】:2012-06-01 01:40:07
【问题描述】:

我正在尝试创建一个扩展器来限制可以推入可观察数组的项目数量。我遇到的问题是写入应该发生的时间。我收到关于对象没有“推送”方法的错误。

这是演示我在说什么的小提琴。当您单击任何复选框时,将显示错误。您必须在 Chrome 或 Firefox 中打开开发者工具窗口才能看到错误。

http://jsfiddle.net/pEzsb/55/

【问题讨论】:

  • Knockout 需要一个 observableArray,但您已将其替换为没有 push() 方法的计算 observable。您将需要找到不同的解决方案。

标签: javascript knockout.js


【解决方案1】:

这是一种快速而肮脏的方法。

ko.extenders.arrayMaxLength = function(target, length) {
    target.push2 = target.push;
    target.push = function (value) {
        if (this().length < length) {
            this.push2(value);
        }
    };
    return target;
};

http://jsfiddle.net/madcapnmckay/2bTra/1/

它不是很有用,因为它不会停止检查复选框,我认为这是您想要发生的事情,它只是停止将值放入数组。

更好的解决方案是编写一个自定义的检查绑定处理程序,其限制值会阻止它们被检查。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    这是我最终做的:

    http://jsfiddle.net/zero21xxx/B3RgK/

    基本上只控制复选框是否启用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-21
      • 2013-10-23
      • 1970-01-01
      • 2013-02-28
      • 1970-01-01
      • 2014-01-06
      • 2021-12-23
      相关资源
      最近更新 更多