我正在尝试创建一个扩展器来限制可以推入可观察数组的项目数量。我遇到的问题是写入应该发生的时间。我收到关于对象没有“推送”方法的错误。
这是演示我在说什么的小提琴。当您单击任何复选框时,将显示错误。您必须在 Chrome 或 Firefox 中打开开发者工具窗口才能看到错误。
我正在尝试创建一个扩展器来限制可以推入可观察数组的项目数量。我遇到的问题是写入应该发生的时间。我收到关于对象没有“推送”方法的错误。
这是演示我在说什么的小提琴。当您单击任何复选框时,将显示错误。您必须在 Chrome 或 Firefox 中打开开发者工具窗口才能看到错误。
这是一种快速而肮脏的方法。
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/
它不是很有用,因为它不会停止检查复选框,我认为这是您想要发生的事情,它只是停止将其放入数组的值。
更好的解决方案是编写一个自定义的已检查绑定处理程序,其限制值将阻止它们被检查。
希望这可以帮助。