2013-11-23 44 views
0

我正尝试使用director.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> 

回答

0

我没有用过,但是导演您的问题可能是GitHub上提供的“原始”文件与MIME类型的“text/plain的事实的方法回答”。所以Director js代码可能不会被当作javascript来处理,导致你的测试页面不能工作。尝试下载您自己的Director副本,并链接到本地​​版本,而不是GitHub上的版本。

+0

正如@ Matt27所建议的,务必将演示html页面保存在一个新文件中并从您的文件系统运行。这就是我今天所做的,并且一切都按预期工作。您不需要从Web服务器实际提供演示页面;本地文件系统就足够了。 HTH。 –