限制ObservableArray中的项目数

时间:2012-05-31 13:46:46

标签: javascript knockout.js

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

这是演示我正在谈论的内容的小提琴。单击任何复选框时,将显示错误。您必须在Chrome或Firefox中打开您的开发人员工具窗口才能看到错误。

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

2 个答案:

答案 0 :(得分:2)

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

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/

它不是非常有用,因为它不会停止检查复选框,我认为这是你想要发生的事情,它只是停止使它成为数组的值。

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

希望这有帮助。

答案 1 :(得分:1)

这是我最终做的事情:

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

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