在Meteor js中加载DOM后运行JQUERY脚本?

时间:2016-01-15 07:26:39

标签: jquery meteor meteor-blaze meteorite flow-router

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

3 个答案:

答案 0 :(得分:0)

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

Template.Mytemplate.onRendered(function() {
  $(function() {
      // your code goes here
  });
});

答案 1 :(得分:0)

现在在Meteor中最好的方法是使用以下代码:

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

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

答案 2 :(得分:-1)

问题是,当执行Template.subscriptionsReady时,订阅还没有准备好,所以DOM还没有准备好。因为我在加载DOM之前使用了OnReady()检查。因此订阅时会有一个名为Meteor.subscribe("somePublication", {onReady: function(){//code to perform after //subscription is ready goes here }})的回调函数。会是这样的:
UriComponentsBuilder urlBuilder = UriComponentsBuilder.fromHttpUrl(url); uri = urlBuilder.build().encode("ISO-8859-1").toUri();