2013-11-23 46 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。 –