Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript meteor.js的模板加载事件_Javascript_Meteor - Fatal编程技术网

Javascript meteor.js的模板加载事件

Javascript meteor.js的模板加载事件,javascript,meteor,Javascript,Meteor,我知道meteor会为DOM元素公开诸如“单击”之类的事件,但我想知道在加载模板或部分时是否会触发加载事件?我将如何做到这一点 谢谢。以下内容应该有效。 一旦模板添加到DOM并呈现,Meteor.defer将被调用 <template name="temp"> //regular stuff {{invokeAfterLoad}} </template> Template.temp.invokeAfterLoad = function () { Me

我知道meteor会为DOM元素公开诸如“单击”之类的事件,但我想知道在加载模板或部分时是否会触发加载事件?我将如何做到这一点

谢谢。

以下内容应该有效。
一旦模板添加到DOM并呈现,Meteor.defer将被调用

<template name="temp">
    //regular stuff
    {{invokeAfterLoad}}
</template>

Template.temp.invokeAfterLoad = function () {
  Meteor.defer(function () {
     $('mydiv').jquerify();
  });
  return "";
};

//普通的东西
{{invokeAfterLoad}}
Template.temp.invokeAfterLoad=函数(){
Meteor.defer(函数(){
$('mydiv').jquery();
});
返回“”;
};

我建议这样做,而不是公认的答案,稍微少一点粗俗:

<template name="temp">
    {{aReactiveHelper}}
</template>

Template.temp.aReactiveHelper = function() {
  var someValue = Session.get('someValue');
  invokeAfterLoad();
  return someValue;
};

var invokeAfterLoad = function () {
  Meteor.defer(function () {
     $('mydiv').doSomething();
  });
};

{{AreaActiveHelper}}
Template.temp.AreaActiveHelper=函数(){
var someValue=Session.get('someValue');
invokeAfterLoad();
返回一些值;
};
var invokeAfterLoad=函数(){
Meteor.defer(函数(){
$('mydiv').doSomething();
});
};
假设您希望在加载模板后调用某个对象,因为它是对反应对象作出反应的


这里的好处是您不需要向模板中添加动画代码。

对于从0.4.0预览版开始的Meteor,您可以使用

但是,在
Template.myTemplate.created
中,DOM尚未就绪

如果需要操作DOM,您可能希望改为使用,并使用布尔值跟踪模板对象内的状态,如下所示:

Template.myTemplate.rendered = function() {
    if(!this._rendered) {
      this._rendered = true;
      console.log('Template onLoad');
    }
}

这与Nachiket的v1.1.0.2版本的答案几乎相同。该模式已被弃用。改为使用
Template.temp.helpers(…)
Template.myTemplate.rendered
自Meteor 1.0.4以来一直被弃用。虽然仍支持向后兼容,但您可能希望对较新版本使用
Template.myTemplate.onRendered