Выполнить функцию на основе хеша с Director.js
Я пытаюсь использовать Director.js для маршрутизации на моем одностраничном приложении. Проблема в том, что когда вы переходите на страницу, вводя ее в адресную строку, приложение не выполняет функцию, на которую указывает хеш в таблице маршрутизации.
Вот пример на github - если я обновлю страницу с помощью хэша или сразу перейду на страницу с хэшем, в консоли ничего не появится. Но если я нажму на одну из ссылок, вывод консоли будет показан. Как я могу изменить этот код так, чтобы, если пользователь непосредственно переходит на ссылку, таблица маршрутизации проверяет хеш и выполняет функцию сопоставления из таблицы маршрутизации? Пожалуйста, ответьте с методологией, которая использует Director.js
<html>
<head>
<meta charset="utf-8">
<title>A Gentle Introduction</title>
<script src="https://raw.github.com/flatiron/director/master/build/director.min.js"></script>
<script>
var author = function () { console.log("author"); },
books = function () { console.log("books"); },
viewBook = function(bookId) { console.log("viewBook: bookId is populated: " + bookId); };
var routes = {
'/author': author,
'/books': [books, function() { console.log("An inline route handler."); }],
'/books/view/:bookId': viewBook
};
var router = Router(routes);
router.init();
</script>
</head>
<body>
<ul>
<li><a href="#/author">#/author</a></li>
<li><a href="#/books">#/books</a></li>
<li><a href="#/books/view/1">#/books/view/1</a></li>
</ul>
</body>
</html>
1 ответ
Я не использовал Director, но ваша проблема может заключаться в том, что GitHub обслуживает "сырые" файлы с типом mime "text / plain". Поэтому JS-код Director не может быть обработан как javascript, из-за чего ваша тестовая страница не работает. Попробуйте загрузить свою собственную копию Director и ссылку на локальную версию вместо той, что на GitHub.