Событие инициализации страницы framework7 не срабатывает

Я пытаюсь использовать framework7 и не могу запустить событие init страницы. Код, который я использую, очень прост, и я очень внимательно следил за документацией. Независимо от того, что я делаю, он никогда не срабатывает (ничего не записывается в консоль и ошибок нет).

Я создал ручку, показывающую проблему.

Я также попробовал это с обратным вызовом myApp.onPageInit, Нада.

Любая помощь с благодарностью.

Код JS

var myApp = new Framework7({});
var $ = Dom7;
var mainView = myApp.addView('.view-main', {
    dynamicNavbar: true
});
$(document).on('page:init', function (e) {
    alert("processing page init");
});

HTML

<div class="views">
  <div class="view view-main navbar-through toolbar-through">
    <div class="navbar">
      <div class="navbar-inner">
        <div class="center">Framework7</div>        
      </div>
    </div>
    <div class="toolbar">
      <div class="toolbar-inner">
        <a href="#" class="link">Left</a>
        <a href="#" class="link">Right</a>
      </div>
    </div>
    <div class="pages">
      <div class="page" data-page="home">
        <div class="page-content">
          <div class="content-block">
            <p>Hi there!</p>            
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

5 ответов

Решение

Это может быть решено приложением init вручную (иногда событие не запускается, когда содержимое загружается в первый файл)

Или попробуйте вызвать обратный вызов вашей домашней страницы (третья точка ссылки)

@SuperDuperApps, мне удалось запустить код. Очень похоже на то, что предложил Джигги, если вы отложите инициализацию, она работает для меня (ниже). Но если вы не хотите, чтобы он вызывался на первой и только на последующих страницах, тогда код, который у вас есть, работает. Просто попробуйте добавить ссылку (на about.html), похожую на ту, что есть в документации, и она работает

var myApp = new Framework7({
    init: false
});
var $ = Dom7;
var mainView = myApp.addView('.view-main', {
    dynamicNavbar: true
});
$(document).on('page:init', function (e) {
    alert("processing page init");
});
myApp.init()

Примечание: PageInit не вызывается обратно.

Подробная информация представлена ​​на следующей странице.

https://framework7.io/docs/page.html

Я использовал это так: в app.js

var app = new Framework7({
    id: 'io.framework7.testapp',
    root: '#app',
    ...
    on: {
        pageInit: function (e, page) {
            console.log('page init -> route.name=' + e.route.name);

            if(e.route.name === "searchPage") {
                app.methods.searchPageInitMethod(e);
            }
        },
    },
    methods: {
        searchPageInitMethod: function (e) {
            console.log("Page Route Params:" + app.views.main.router.currentRoute.params)
        },
    },
    ...
}

Моя таблица маршрутов (routes.js) выглядит так:

var routes = [
    ...
    {
        name: "searchPage",
        path: '/search/:keyword/',
        url: './pages/page-search.html',
    },
    ...
];

Ваша инициализация идеальна, никаких проблем, однако вместо использованияalert()пытатьсяmyApp.alert()надеюсь, что это сработает.

Это изменилось с версии 3. Теперь, сделать то же самое можно, выполнив это:

var myApp = new Framework7({
    ...
    init: false
});

myApp.on('init', function(e) {
    alert('app init event fired');
});

myApp.init();
Другие вопросы по тегам