2016-02-04 6 views
0

Я использую flatiron/director для выполнения маршрутизации на стороне клиента.Использование director.js, hwo Я определяю маршрут по умолчанию для корня сайта, в котором нет хэш-файла #?

У меня есть маршруты, такие как:

var routes = { 
    '': function() { loadLandingPage(); }, 
    '/author': function() { author(); } 
    }; 

Если я иду в www.example.com #/автор, он запускает функцию автора. Если я перейду на сайт www.example.com # или www.example.com #, то загрузится моя целевая страница.

Однако я хочу определить маршрут по умолчанию для корня моего сайта без #. Я хочу, чтобы целевая страница загружалась, даже когда мы приземляемся на www.example.com без #.

Я просмотрел документацию, но для меня жизнь не может понять. Я думал, что метод configuration: notfound будет делать то, что я думаю, но ничего не сделал. Я попытался следующие:

var router = Router(routes).configure({ notfound: loadGlobalPage}); 

и

var router = Router(routes).configure({ notfound: function() {loadGlobalPage();} }); 

, а также после прочтения this thread, я попробовал:

router.notfound = function() { 
    loadGlobalPage(); 
}; 

Я также попытался взломать, не связанную с маршрутизатором:

function determineIfLandingPage() { 
    if (window.location.hash == "") { 
     loadGlobalPage(); 
     window.location.href += "#" 
    } 
} 

Это работает, но это похоже на хак.

Это должен быть несколько распространенный случай использования - как мне получить желаемую функциональность от моего маршрутизатора?

ответ

2

Из документа: redirect method решает эту проблему.

route.init(['/']) перенаправляет на маршрут /, если '/#/' не найден в URL-адресе.

+0

Отличный ответ. Но у вас есть маленькая опечатка :). Не могли бы вы его отредактировать. Это должно быть route.init (['/']). Вам не хватает «t» в init. –

+0

@AnteBraovic спасибо – towry