Meteor - Router.go() doesn't run when passed a variable

104 Views Asked by At

I have a template for a back button I've been reusing:

<template name="btnBack" label="" path="">
    <a href="" data-path="{{path}}" class="btn btn-info btn-small" role="button">
        <span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span> {{label}}
    </a>
</template> 

I pass it two fields, label and path statically.

My intention is to pass the static path field to Iron-Router to change the template rendered.

Setting href to {{pathFor '{{path}}'}}does not work. Neither does defining the attribute onclick as Router.go('{{path}}').

In my third attempt, I passed the path to a data attribute: data-path="{{path}}"

And then I reference this attribute from within a template helper:

Template.btnBack.events({
  'click a': function(event, template) {
    var path = ''+event.target.dataset.path;
    console.log(path); 
    Router.go(path); 
  }
});

The console.log statement runs correctly, and outputs the statically-defined path in Google Chrome's console window.

Router.go however, does nothing - it doesn't even throw an error for an incorrect path in the console.

Here is how I instantiate the template: {{> btnBack label="Back" path="home"}}

What am I doing wrong?

1

There are 1 best solutions below

1
On BEST ANSWER

Could you try setting the link to

<template name="btnBack" label="" path="">
    <a href="{{ pathFor path }}" class="btn btn-info btn-small" role="button">
        <span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span> {{label}}
    </a>
</template>