使用director.js执行基于哈希的函数

时间:2013-11-23 17:11:50

标签: javascript flatiron.js

我正在尝试使用director.js在我的单页应用程序上进行路由。问题是,当您通过在地址栏中键入页面来访问页面时,应用程序不会执行路由表中的哈希所指向的功能。

Here is the example on 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 个答案:

答案 0 :(得分:0)

我没有使用过Director但你的问题可能是GitHub使用mime类型的“text / plain”提供“原始”文件。因此Director js代码可能不会被处理为javascript,导致您的测试页无法工作。尝试下载自己的Director副本并链接到本地​​版本,而不是GitHub上的版本。