繁体   English   中英

使用Blaze.render + Blaze.view或Blaze.with以编程方式将变量插入流星模板

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM