直接从Spacebars访问模板实例对象属性

时间:2015-08-17 06:14:02

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

作为the Meteor docs state

  

模板实例对象表示文档中出现的模板。它可以用于访问DOM,并且可以为其分配属性,这些属性在模板被反应更新时持久存在。 [...]您可以将您选择的其他属性分配给对象。

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

必须定义只执行

的帮助程序是很麻烦的
return Template.instance().myProperty

3 个答案:

答案 0 :(得分:4)

就像@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}}

因此不需要全局帮助程序,并且可以从Spacebars访问它,因此不需要帮助程序

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

例如

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

和帮助

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