简体   繁体   中英

create path helper, pass hash to handlebars helper or concatenate string

I was looking for a way to create a path helper in handlebars which generates a url to a specific page. I need to be able to pass a route name and the params needed to generate the route. SO first i was looking to pass a hash to the helper ... but this isn't possible because you can't create this inside the handler template. Now the syntax is like this:

{{{path 'some_path_name' 'foo=bar' }}} 

and this seems to work but now i have an issue with that i can't concatenate strings inside the template. Any idea what's the best way to do this? The only option i see now is that i create the params inside my javascript code ... but i don't really like this, i wan't to be able to specify it in the template.

I have a mapping somewhere which maps some_path_name to /path-name/:foo ... so i want the path helper to create /path-name/bar.

kind regards,

Daan

This code should work, but you have to add some extra validation.

var routes = {
    'some_path_name': '/path-name/:foo'
};

Handlebars.registerHelper('path', function (routeName, options) {
    var route,
        params;

    if (!routes.hasOwnProperty(routeName)) return;

    route = routes[routeName];
    params = options.hash;

    for (var param in params) {
        var value = params[param];
        route = route.replace(':'+ param, value);
    }

    return route;
});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM