[英]Programmatically insert variables into Meteor Templates with Blaze.render + Blaze.view or Blaze.with
我试图弄清楚如何使用Blaze API以编程方式将变量帮助器插入模板。 我认为需要使用以下形式:
Blaze.render(Blaze.with('variable', contentFunction);
但是,我正在努力使contentFunction正常工作。 我尝试了一个返回Session变量的函数:
var session_var = function() {
return Session.get('myVariable');
};
但是,我不断收到未定义的错误。 我知道如果我定义一个单独的模板进行渲染,可以做到这一点,但是对于这种特殊情况似乎有点。 我想知道是否有人可以解释Blaze.with和Blaze.view是如何工作的。 另外,是否可以通过编程方式仅将变量助手插入模板中?
在不完全知道您要做什么的情况下,尚不清楚这是否是最简单的处理方法。
但是,如果您查看docs ,则会发现可以在数据上下文中提供会话变量并使用Blaze.With ,也可以不提供数据上下文并使用Blaze.View代替(这似乎是您所需要的)。重新)。
因此,如果要呈现反应式数据上下文,则必须在Blaze.With的第一个参数中提供它 。 尝试这样的事情:
var myView = Blaze.With(
function() {
return {
foo: Session.get('foo')
};
},
function() {
return Spacebars.mustache([
'the value of foo is ',
this.lookup('foo')
]);
}
);
Blaze.render(myView, document.body); // or whatever element you want to render it inside
另外,对于Blaze.View :
var myView = Blaze.View(
function() {
return 'the value of foo is ' + Session.get('foo');
}
);
Blaze.render(myView, document.body);
老实说,了解可渲染内容结构的最简单方法(如果您以编程方式进行此操作,这将很困难)是研究Spacebars编译器所产生的内容。 换句话说,找到一个从准HTML生成的有趣模板/子模板,从中选择一个元素并运行Blaze.getView([ELEMENT])._render
,然后研究结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.