gpt4 book ai didi

knockout.js - 从 observableArray 中 knockout 项目在 IE8 中抛出错误

转载 作者:行者123 更新时间:2023-12-04 04:32:07 25 4
gpt4 key购买 nike

我一直在使用一个稍微修改过的 jQueryUI 可排序版本,带有 observableArrays 示例 Ryan Niemeyer 在这篇博文中汇总:http://www.knockmeout.net/2011/05/dragging-dropping-and-sorting-with.html .但是,我注意到在使用最新版本的 Knockout (3.0) 时,在运行 IE8 时尝试从 observableArray 中删除项目时出现错误。这是 JSFiddle:http://jsfiddle.net/klinden/xFyA2/ (请注意,为了在 IE8 中运行它,您需要使用 draft mode )。要复制错误,请尝试抓取列表中的最后一项并将其移至其他位置。该行会出现错误:list.remove(item);错误似乎发生在 notifySubscriberskosubscribable的方法(在 1012 行附近)。所有其他浏览器似乎都运行良好,旧版本的 Knockout(例如 2.2.1)似乎也运行良好(即使在 IE8 中)。

最佳答案

我研究了一下这个。 KO中有一些代码最终调用了apply带有未定义的第二个参数,这会导致旧 IE 出现错误。

nodesToDelete.push.apply(nodesToDelete, ko.utils.fixUpContinuousNodeArray(mapData.mappedNodes, domNode));

第二个参数未定义,因为拖动元素使 DOM 处于意外状态。这可以通过执行“|| []”或始终从 fixUpContinuousNodeArray 返回数组来在 KO 中“修复”。 .当我有机会确保我完全理解这个问题时,我会做一些额外的研究,并会做 KO 修复(因为它是次要的)。

现在,我确实注意到,如果您使用 sortable,您将不会收到错误消息。插件 ( https://github.com/rniemeyer/knockout-sortable ) 和比 Fiddle 包含的更新版本的 jQuery/jQuery UI。该插件具有适用于各种场景的附加功能和错误修复。

这是更新的示例: http://jsfiddle.net/rniemeyer/5eVfF/

关于knockout.js - 从 observableArray 中 knockout 项目在 IE8 中抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20432707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com