2011-04-25 35 views
1

有沒有辦法讓Sammy.JS在調用app.run()時不會自動調用runRoute?Sammy.JS沒有自動runRoute on app.run?

我的代碼當前在第一次加載時初始化Sammy,但不希望它實際調用任何sammy路由,直到用戶實際單擊一個鏈接。

回答

2

您可以嘗試將非操作路線傳遞給run方法。在這種情況下,它可能會忽略散列中的任何路由。

否則,您可以在文檔根目錄上設置偵聽器來監聽文檔中的點擊並運行應用程序。但是這個解決方案似乎「不太乾淨」。

(假設jQuery的)

$(function() { 
    var app = Sammy(); 

    $("a").live(function() { 
     if (!app.isRunning()) { 
      app.run(); 
     } 
    }); 
}); 
0

問題是舊的,但我用下面的解決方案,我覺得乾淨了一點。

頁面加載正常,Sammy在使用.run()時不會調用當前路由。

http://sammyjs.org/docs/api/0.7.4/Sammy.Application.methods.before

var appIsRunning = false; 

var app = Sammy(function() { 

    this.before('.*', function() { 

     if (this.path == document.location.pathname && appIsRunning == false) { 
      return false; 
     } 
    }); 

    // The routes... 
    ... 

} 

// start the application 
app.run(); 
if (app.isRunning()) { appIsRunning = true; }