Javascript 访问模板';s实例范围并注入数据
我正在寻找一种方法来访问模板的变量并将其注入一些数据。我想在路由之前获取数据,并在所需模板呈现时使其可用 直接访问该范围将是有益的。这是我为特定模板(尚未呈现)编写的代码,变量为allFriendsJavascript 访问模板';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
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
部分更新了我的问题,使其更清晰。谢谢,我的两个模板完全不同,因此没有父子关系。我现在就投赞成票,因为这可能会解决我的问题