baseprime / grapnel

The smallest JavaScript router with named parameters, HTML5 pushState, and middleware support
http://grapnel.js.org
467 stars 40 forks source link

preventDefault #46

Closed daslicht closed 9 years ago

daslicht commented 9 years ago

Even tho I have the following code, the page will still reload:

router.get('/about', function(req, event) {
        event.preventDefault(); 
...

What am I missing please?

baseprime commented 9 years ago

Hi @daslicht, when you're setting a route, you're setting an event listener. So your handler in this case is the event handler. So in your case, it's too late to call preventDefault on an event that's already been fired.

router.get('/about', function(req, event){
    event.callbackRan // true
});

You can prevent route handlers from being fired by listening for route change events:

router.on('match', function(event){
    if(event.route === '/about'){
        event.preventDefault();
    }
});