1

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

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

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

4

2 回答 2

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/

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

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

希望这可以帮助。

于 2012-05-31T16:00:28.227 回答
1

这是我最终做的事情:

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

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

于 2012-05-31T17:40:07.143 回答