Sammy.JS без автоматического запуска на app.run? - PullRequest
1 голос
/ 25 апреля 2011

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

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

Ответы [ 2 ]

2 голосов
/ 25 апреля 2011

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

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

(при условии, что jQuery)

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

    $("a").live(function () {
       if (!app.isRunning()) {
          app.run();
       }
    });
});
0 голосов
/ 07 ноября 2014

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

Страница загружается нормально, и Сэмми не вызывает текущий маршрут при использовании .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; }
...