我正在寻找一种方法来访问并将一些数据注入模板的变量中。我想在路由之前获取数据,并在需要的模板渲染时使其可用。
直接访问该范围将非常有用。这是我特定模板的代码(尚未渲染),变量为 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([]);
});
但我得到Uncaught Error: There is no current view
答案 0 :(得分:1)
是否要在FacebookLook
视图中插入数据?不需要Blaze.getView().
您可以使用ReactiveVar对此进行归档。
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()
}
});
#Edit 1
根据您的问题,您需要做的就是这个。
Template.InitView.onCreated(function () {
var facebookTmpl = Blaze.getView('FacebookLook') && Blaze.getView('FacebookLook').templateInstance();
facebookTmpl.allFriends.set([]);
});
请注意,您需要知道只有InitView
视图是FacebookLook视图中的包装器时才会有效,我正在谈论这个。
<template name="FacebookLookTemplate">
{{> InitView}} {{! here initView can access the parent or wrapping template}}
</template>