【发布时间】:2014-12-19 12:41:17
【问题描述】:
我正在使用可排序的 jQuery UI 来更新存储在容器文档中的数组的顺序。当排序触发“停止”方法时,它会重建数组并根据新的 DOM 布局对其进行排序。一切正常,更新后的文档反映了正确的顺序。但是,dom 重新加载,并且顺序恢复到原来的状态。
当我物理刷新页面时,它实际上显示了正确的顺序。只是动态更改数组不会正确地重新渲染自身。
有趣的是,这个问题仅在 0.9.4 中出现,因此可能是流星的错误,只是不确定是否有更改会影响我想要完成的工作。
如果需要,我会提供代码示例,但由于代码本身似乎工作正常,并且每个代码都没有更新以反映顺序,我不确定它是否会有所帮助。
谢谢!
更新
我已经整理了一个独立的问题演示,在下面的评论中列出:
好的,这是一个疯狂的问题示例:
来源:meteorpad.com/pad/uQ42DRH95JcHtKnb9
尝试对项目进行一些排序以查看问题的第 1 部分。接下来,在排序后,尝试点击切换按钮几次,尤其是在您排序的项目列表中。这是问题的第二部分。现在,如果您刷新页面,一切都会被赶上。笏。
双重更新
感谢 Github 的 aldeed,我有一个解决方案:https://github.com/meteor/meteor/issues/2944
通过将我的子文档引用键从“id”更改为“_id”,Blaze 似乎接受了对排序的更改!
【问题讨论】:
-
根据更多探索,似乎 Meteor 仅在调用 update 前后列表大小不同时才进行完整的重新渲染。如果我只是重新排序数组并将其保存为新值,我会遇到问题。继续挖……
-
探索继续。我没有修改数组的顺序,而是只更新数组中每个项目的排名值,并使用帮助程序手动进行排序。同样的问题,除了当我真正开始修改已经排序的文档时,它会打开一些其他有趣的错误。我将尝试制作一个可以分享的简化示例。
-
好的,这是一个疯狂的问题示例:app-9ryym2m2.meteorpad.com meteorpad.com/pad/uQ42DRH95JcHtKnb9 尝试对项目进行一些排序以查看问题的第 1 部分。接下来,在排序后,尝试点击切换按钮几次,尤其是在您排序的项目列表中。这是问题的第二部分。现在,如果您刷新页面,一切都会被赶上。笏。
-
上面的演示网址对我不起作用。
-
@rdickert 尝试使用流星垫链接。事实证明,如果我没有登录,meteorpad 会关闭服务器。或者类似的东西!
标签: jquery-ui meteor meteor-blaze