jQuery UI 还不是 Meteor“包”,即使它最终成为一个包,也会有更新的 jQuery 和 jQuery UI 版本,以及人们可能想要与 Meteor 一起使用的其他 jQuery 插件。出现了各种各样的问题:
- 通过
<script>
加载标签,或者将js文件放在客户端或根目录中? - 如果从 CDN 获取脚本有任何问题吗?更好地存储在本地(例如在“公共(public)”目录中)?
- 自
$(document).ready()
可能会在渲染模板之前调用,那么调用通常从 .ready() 调用的各种设置函数的最佳位置在哪里?他们应该被叫到Templates.<Name>.rendered
,这样如果 DOM 在模板渲染期间发生更改,各种事件处理程序将重新附加到新的 DOM 节点?这是否会导致仍然存在的旧处理程序内存泄漏,用于处理已从 DOM 中删除的幻像节点? - 如果您尝试根据 jQuery UI 小部件的事件回调更改模型数据(并且 Meteor 模板事件本身不支持该事件,例如“click”或“dblclick”),那么最好的方法是什么在回调期间识别与相关小部件关联的集合数据?您是否应该在 Template..rendered 期间将对象的 _id 加载到 DOM 中,然后在关联的 jQuery UI 事件处理程序期间将其读回?还有其他方法吗?
请注意,问题已更改 since 0.5.0, according to this question ,因此一些现有的类似 StackOverflow 问题可能已过时( also 、 also 、 also )。
如果一个例子可以帮助您回答,这里有一个集成了 jQuery Draggable 和 Droppable 的工作(?)Meteor 项目: http://products-jqueryui.meteor.com/ 与 Source Here 基于Tutorial Here
(我的问题中的“安全”是指不会在 Meteor 框架中造成破坏性错误(或导致 Meteor 破坏 jQuery/jQuery UI),并且尽可能高效:避免过多的 DOM 操作/渲染、客户端/服务器流量过多或导致内存泄漏。)
最佳答案
- 将它们放在/client 文件夹中。所有 javascript 文件都将由 Meteor 自动加载,并且在 Meteor.startup 发生时应该可用。
- 请参阅我对问题 1 的回答。
- 使用 Meteor.startup 而不是 $(document).ready(),因为当 Meteor 和文档准备就绪时将会调用它。如果您想要执行模板所依赖的逻辑,请使用 Template.rendered,因为每次 Meteor 触及模板时您都需要重新执行逻辑。
- 在回调中,
this
将引用当前对象。
关于jquery - 如何在 Meteor 框架内安全地使用 jQuery UI 小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13408940/