2

我希望在加载所有DOM元素后加载一个 jQuery 脚本。我试图通过Template.Mytemplare.onRendered();但这并没有解决我的问题,因为 DOM 还没有准备好。另外我使用的是 Flow-router 而不是 Iron Router 所以我不能使用 Iron Router 的onAfterAction钩子或模板的渲染回调?我还使用了订阅,所以如果订阅准备好了,我会加载 DOM Template.subscriptionReady。有什么建议么?

4

3 回答 3

0

现在在 Meteor 中执行此操作的最佳方法是使用以下方法:

Template.MyTemplate.onRendered(function(){
    Tracker.afterFlush(function(){
        // run code in here
    });
});

当 DOM 实际完成加载时,使用 afterFlush 运行代码。您将需要 Meteor “tracker” 包,这是一个官方插件。

于 2020-05-01T00:33:56.390 回答
0

你可以结合 onRendered 和 jQuery 的 ready 函数:

Template.Mytemplate.onRendered(function() {
  $(function() {
      // your code goes here
  });
});
于 2016-01-15T10:40:18.947 回答
-1

问题是Template.myTemplate.onRendered();执行时,订阅还没有准备好,所以DOM还没有准备好。因为我Template.subscriptionsReady在加载 DOM 之前使用了检查。OnReady()所以订阅时会调用一个回调函数 。它会像这样:
Meteor.subscribe("somePublication", {onReady: function(){//code to perform after //subscription is ready goes here }})

于 2016-01-15T11:59:01.843 回答