Meteor template.rendered and this.data access

I have a template

<template name='order'>
  {{vendor.name}}
</template>

rendered with

  Template.order.vendor = function () {
    return {name: 'Chanel', address: 'Paris' };
  };

When I try to access this.data in

Template.order.rendered = function () {
  console.log(this.data);
};

I get 'undefined'.

What is the correct way of getting eg vendor.name and vendor.address in Template.order.rendered ?

Thank you.


In Template.rendered, this.data corresponds to the data the template was "fed" with, either as a parameter or using the {{#with}} construct. vendor is just a helper function returning data available in the order template, but not binded to "this.data". SO to solve your problem, you have a number of options :

Defining a parent template and moving the vendor helper to this parent, then you can alternatively call order with vendor as a parameter or use a {{#with block}}

<template name="parent">
    {{> order vendor}}
    {{#with vendor}}
        {{> order}}
    {{/with}}
</template>

<template name="order">
    {{name}}
</template>

Template.parent.vendor=function(){
    return{
        name:"Chanel",
        address:"Paris"
    };
};

Template.order.rendered=function(){
    // this.data == vendor object returned in parent helper
    console.log(this.data);
};

You can also register a global helper, eliminating the need for an encapsulating parent template :

Handlebars.registerHelper("vendor",function(){
    return{
        name:"Chanel",
        address:"Paris"
    };
});

Template.order.rendered = function () {
    console.log(Template.order.vendor());
}
链接地址: http://www.djcxy.com/p/72884.html

上一篇: Qt QNetworkReply总是空的

下一篇: 流星template.rendered和this.data访问