【问题标题】:Access template instance object properties directly from Spacebars直接从空格键访问模板实例对象属性
【发布时间】:2015-11-09 16:52:00
【问题描述】:

作为the Meteor docs state

模板实例对象表示文档中模板的出现。它可以用于访问 DOM,并且可以为它分配属性,这些属性会随着模板的响应式更新而持续存在。 [...] 您可以为对象分配您选择的其他属性。

如何从Spacebar 模板访问这些属性?

必须定义只做无用的助手是很麻烦的

return Template.instance().myProperty

【问题讨论】:

  • 如果你定义了一个返回Template.instance()的全局助手呢?

标签: javascript templates meteor meteor-blaze meteor-helper


【解决方案1】:

就像@apendua 在评论中所说,你可以使用全局助手,这对我有用:

Template.mainPage.onCreated(function(){
  this.test = new ReactiveVar('stackoverflow');
});

Template.registerHelper('instance', function(context, options) {
  return Template.instance()[context].get();
});

在 HTML 中

{{instance 'test'}}

你也可以使用Template.currentData()

编辑

根据this article,您可以在 HTML 中执行以下操作:

{{Template.instance.test.get}}

因此不需要全局助手,并且可以从空格键访问它,因此不需要助手

【讨论】:

  • OP 声明他不想定义助手。他想“直接”访问数据
  • 不,他不想每次需要返回一些模板值时都创建新的助手
【解决方案2】:

OP 希望在没有任何帮助的情况下直接访问数据。您需要将数据存储在Template.currentData()Template.parentData(n) 中。其中的任何内容都可以分别以{{myData}}{{../myParentData}} 访问。

【讨论】:

    【解决方案3】:

    我认为你可以使用 {{#with}}{{/with}}

    例如

    {{#with getObject}}
    <h1>{{prop1}}</h1>
    <h2>{{prop2}}</h2>
    {{/with}}
    

    在助手中

    getObject:function(){
    return {prop1:'some text prop1',prop2:'some text prop2'}
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-01
      • 1970-01-01
      • 2016-06-23
      • 2019-12-27
      • 1970-01-01
      • 1970-01-01
      • 2018-01-22
      • 1970-01-01
      相关资源
      最近更新 更多