#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; }