【问题标题】:Meteor Blaze renderWithDataMeteor Blaze 渲染数据
【发布时间】:2016-03-10 07:23:14
【问题描述】:

我正在尝试通过 Blaze 呈现模板。 所以通常我会打电话

Blaze.render(Template.xxx,$("#parentnode")[0]);

效果很好。

现在我想区分渲染它的模板 xxx。 所以我想将一个变量传递给我可以用来决定它是谁的模板。 我试过了

Blaze.renderWithData(Template.xxx,{test:"value"},$("#parentnode")[0]);

然后尝试访问

中的数据
 Template.xxx.onRendered(function(){console.log(this.test)});

其中记录了“this.test is not defined blabla”。 如何正确传递和访问数据?

感谢您的回答,祝您愉快!

【问题讨论】:

    标签: javascript meteor meteor-blaze


    【解决方案1】:

    根据meteor docs 无法访问onRendered 回调中的上下文对象。 this 关键字是指模板实例,不包含任何有状态数据。您可以做的是在 DOM 节点内呈现数据属性(如果您不想显示它们,则在隐藏元素中)。您可以通过onRendered 函数访问 DOM。

    【讨论】:

    • OTOH 你可以在数据函数中访问数据上下文。您还可以为父模板设置数据上下文并从子模板访问它。
    【解决方案2】:

    Template.currentData() 在模板渲染时可用,因此请尝试使用 Template.currentData() 代替它,它应该可以工作:

    Template.xxx.rendered = function() {
      var _this = Template.currentData();
      console.log(_this.test)
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-30
      • 2015-05-09
      • 2014-05-09
      • 2017-11-16
      • 2014-05-12
      • 2016-09-27
      • 2018-01-16
      • 2020-07-07
      相关资源
      最近更新 更多