Выполнить функцию на основе хеша с 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.

Другие вопросы по тегам