gpt4 book ai didi

javascript - 使用 Blaze.render + Blaze.view 或 Blaze.with 以编程方式将变量插入到 Meteor 模板中

转载 作者:行者123 更新时间:2023-12-03 10:55:28 26 4
gpt4 key购买 nike

我正在尝试弄清楚如何使用 Blaze API 以编程方式将变量助手插入到模板中。我相信这需要使用某种形式来完成:

Blaze.render(Blaze.with('variable', contentFunction);

但是,我正在努力让 contentFunction 正常工作。我尝试了一个返回 session 变量的函数:

var session_var = function() {
return Session.get('myVariable');
};

但是,我不断收到未定义的错误。我知道如果我定义一个单独的要渲染的模板就可以做到这一点,但这对于这种特殊情况来说似乎有点太多了。我想知道是否有人可以解释 Blaze.with 和 Blaze.view 的工作原理。另外,是否可以以编程方式仅将变量助手插入模板中?

最佳答案

在不确切知道您要做什么的情况下,不清楚这是否是解决问题的最简单方法。

但是,如果你看 the docs ,您将看到可以在数据上下文中提供 session 变量并使用 Blaze.With,或者不提供数据上下文并使用 Blaze.View (其中似乎正是您想要的)。

因此,如果您想呈现响应式(Reactive)数据上下文,则必须在 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,然后研究结果.

关于javascript - 使用 Blaze.render + Blaze.view 或 Blaze.with 以编程方式将变量插入到 Meteor 模板中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28278338/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com