Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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 访问模板';s实例范围并注入数据_Javascript_Meteor_Meteor Blaze - Fatal编程技术网

Javascript 访问模板';s实例范围并注入数据

Javascript 访问模板';s实例范围并注入数据,javascript,meteor,meteor-blaze,Javascript,Meteor,Meteor Blaze,我正在寻找一种方法来访问模板的变量并将其注入一些数据。我想在路由之前获取数据,并在所需模板呈现时使其可用 直接访问该范围将是有益的。这是我为特定模板(尚未呈现)编写的代码,变量为allFriends Template.FacebookLook.onRendered(function () { const instance = Template.instance(); if(!!Friends.find().fetch()) { instance.allFriends = Fri

我正在寻找一种方法来访问模板的变量并将其注入一些数据。我想在路由之前获取数据,并在所需模板呈现时使其可用

直接访问该范围将是有益的。这是我为特定模板(尚未呈现)编写的代码,变量为allFriends

Template.FacebookLook.onRendered(function () {
  const instance = Template.instance();

  if(!!Friends.find().fetch()) {
    instance.allFriends = Friends.find().fetch();
  } else {
    Popup.show("Invite your friends", null);
  }

});
我在论坛上找到了一些讨论,我得到了:

Template.InitView.onCreated(function () {
  Blaze.getView('FacebookLook').allFriends.set([]);
});

但是我得到了一个未捕获的错误:没有当前视图

是否要将数据插入
facebook外观
视图中?不需要
Blaze.getView()。

您可以使用来存档此文件

Template.FacebookLook.onRendered(function () {
  var tmpl = this;

  if(!!Friends.find().fetch()) {
    instance.allFriends = Friends.find().fetch();
  } else {
    Popup.show("Invite your friends", null);
  }
  tmpl.allFriends.set([]);
});

Template.FacebookLook.onRendered(function () {
  var tmpl = this;
  tmpl.allFriends = new ReactiveVar;
});
然后,您可以访问帮助程序或类似事件中的数据

Template.FacebookLook.helpers({
  test:function(){
   return Template.instance().allFriends.get()
  }
});
#编辑1

根据你的问题,你需要做的就是这样

Template.InitView.onCreated(function () {
  var facebookTmpl = Blaze.getView('FacebookLook') && Blaze.getView('FacebookLook').templateInstance();
  facebookTmpl.allFriends.set([]);
});
请注意,您需要知道,只有当
InitView
view是FacebookLook视图中的包装器时,这才有效,我正在讨论这个问题

<template name="FacebookLookTemplate">
   {{> InitView}} {{! here initView can access the parent or wrapping template}}
</template>

{{>InitView}}{{!在这里InitView可以访问父级或包装模板}}

我想要的更多的是从另一个范围打电话和联系。我用
onCreated
部分更新了我的问题,使其更清晰。谢谢,我的两个模板完全不同,因此没有父子关系。我现在就投赞成票,因为这可能会解决我的问题