Сэмми.JS без автоматического запуска в app.run?

#javascript #sammy.js

#javascript #sammy.js

Вопрос:

Есть ли способ сделать это таким простым.JS не вызывает runRoute автоматически при вызове app.run()?

В настоящее время мой код инициализирует Sammy при первой загрузке, но не хочет, чтобы он фактически вызывал какие-либо маршруты sammy, пока пользователь фактически не нажмет на ссылку.

Ответ №1:

Вы могли бы попробовать передать неоперативный маршрут run методу. В этом случае он может игнорировать любой маршрут в хэше.

В противном случае вы могли бы настроить прослушиватель в корне документа для прослушивания кликов в документе и затем запустить приложение. Но это решение кажется «менее чистым».

(предполагается, что jQuery)

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

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

Ответ №2:

Вопрос старый, но я использовал следующее решение, которое, на мой взгляд, немного чище.

Страница загружается нормально, и Сэмми не вызывает текущий маршрут при использовании .run().

http://sammyjs.org/docs/api/0.7.4/Sammy .Приложение.методы.перед

 var appIsRunning = false;

var app = Sammy(function() {

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

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

   // The routes...
   ...

}

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