2011-04-25 3 views
1

Есть ли способ сделать так, чтобы Sammy.JS автоматически не вызывал runRoute при вызове app.run()?Sammy.JS без автоматического запуска Route на 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; }