在Meteor文档中,它表示将在DOM之后调用Meteor.startup
并且所有模板都已处理完毕。但是,Meteor.startup
中的代码就像DOM元素不在那里一样。
在.js:
Meteor.startup(function () {
console.log($('.draggable').length);
});
在.html:
<template name="item">
<div class="draggable ui-widget-content">
</div>
</template>
在控制台中我看到:
0
但在页面上我可以看到我的物品。事实上,如果我在Template.item.rendered
或mouseover
事件中包含我的JQuery,我会获得正确的数组长度。那么为什么startup
函数没有准备好使用我的DOM元素呢?
答案 0 :(得分:5)
我猜你的代码看起来像这样,但如果我错了就告诉我:
<template name="list">
{{#each items}}
{{> item}}
{{/each}}
</template>
{{#each ...}}
帮助程序使用游标对象来响应游标上的数据更改。因此,在您的情况下,如果该数据来自服务器(例如订阅),则在Meteor.startup时,数据可能尚未加载。所以最初你的清单是空的。然后,当数据从线上传出时,将为每个数据项呈现新的item
模板。如果你想让一个特定的项目可拖动,你可以把这个jQuery代码放在Template.item.rendered
回调中。
这有帮助吗?