如何在Meteor框架内安全地使用jQuery UI小部件?

时间:2012-11-16 01:08:36

标签: jquery jquery-ui meteor jquery-droppable jquery-draggable

jQuery UI还不是Meteor" package",即使它最终成为一个,也会有更新的jQuery和jQuery UI版本,以及其他可能想要与Meteor一起使用的jQuery插件。出现了各种各样的问题:

  1. 通过<script>标记加载,或将js文件放在客户端或根目录中?
  2. 如果从CDN获取脚本有任何问题吗?最好在本地存储(例如在&#34; public&#34; dir)?
  3. 由于在呈现模板之前可能会调用$(document).ready(),因此调用可能通常从.ready()调用的各种设置函数的最佳位置在哪里?是否应在Templates.<Name>.rendered中调用它们,以便在模板呈现期间DOM更改时,各种事件处理程序将重新附加到新的DOM节点?这是否会导致仍然存在的旧处理程序的内存泄漏,以处理已从DOM中删除的幻像节点?
  4. 如果您尝试根据来自jQuery UI小部件的事件回调更改模型数据(并且Meteor模板事件本身不支持该事件,例如&#34;请单击&#34;或者&#34; dblclick& #34;),在回调期间,识别与相关小部件相关联的Collection数据的最佳方法是什么?你应该在Template..rendered期间将对象的_id加载到DOM中,然后在关联的jQuery UI事件处理程序中将其读回来吗?还有其他方法吗?
  5. 请注意,问题已更改since 0.5.0, according to this question,因此一些现有的类似StackOverflow问题可能已过时(alsoalsoalso)。

    如果一个例子可以帮助你回答,这里有一个工作(?)Meteor项目,它集成了jQuery Draggable和Droppable: http://products-jqueryui.meteor.com/Source Here 基于Tutorial Here

    (通过&#34;安全&#34;在我的问题中,我的意思是不会在Meteor框架中造成破坏性错误(或导致Meteor破坏jQuery / jQuery UI),并且尽可能高效:避免过多的DOM操作/渲染,过多的客户端/服务器流量或导致内存泄漏。)

1 个答案:

答案 0 :(得分:4)

  1. 将它们放在/ client文件夹中。任何javascript文件都将由Meteor自动加载,并且应该在Meteor.startup发生时可用。
  2. 请参阅我对问题1的回答。
  3. 使用Meteor.startup而不是$(document).ready(),因为当Meteor和文档准备就绪时会调用它。如果要执行模板所依赖的逻辑,请使用Template.rendered,因为每次Meteor触摸模板时都需要重新执行逻辑。
  4. 在回调中,this将引用当前对象。