Link 在导航栏中使用动态弹出窗口,framework7

Link in navbar using dynamic popup, framework7

我在我的主页中使用带有导航栏的 "Fixed" 样式布局页面,我也想在弹出窗口中使用它。在我的主页上一切正常,我可以在导航栏中使用 links/icons 来触发某些事件。但是,将相同的结构复制到弹出窗口时,我无法触发任何事件。

在我的主页上,一切正常 HTML:

<div class="views">
  <div class="view view-main">
    <div class="pages">
      <div data-page="index" class="page navbar-fixed toolbar-fixed">
    <!-- Top Navbar-->
    <div class="navbar">
      <div class="navbar-inner">
       <div class="center">Hello</div>
        <div class="right">
          <a href="" class="navbarIcon">
           <i class="f7-icons">add_round</i>
          </a>
       </div>
     </div>
   </div>
    <!-- /End of Top Navbar-->

    <div class="page-content" >
      <div class="content-block">
      ...

我可以使用下面的 JS 来触发基于点击的事件:

$$('.navbarIcon').on('click', function (e) {
console.log("Hello");
});

当对动态弹出窗口使用相同的结构时,我无法触发任何事件。弹出 HTML 是:

    var popupHTML =
    '<div class="popup popup-stats">'+
    '<div class="view view-popup">' +
    '<div class="pages">' +
    '<div data-page="popup-stats" class="page navbar-fixed toolbar-fixed">' +

    '<div class="navbar">' + 
    '<div class="navbar-inner">' +
    '<div class="center">Hello</div>' +
    '<div class="right">' +
    '<a href="" class="navbarIcon">' +
    '<i class="f7-icons">add_round</i>' +
    '</a>' +
    '</div>' +
    '</div>' +
    '</div>' +

    '<div class="page-content">' +
    '<div class="content-block">'+
    ...
    myApp.popup(popupHTML);

我希望通过在弹出窗口中包含此导航栏来触发相同的 JS 代码,但没有任何反应。我可以在控制台中看到 class navbarIcon 确实处于活动状态,但仍然没有触发 JS 代码。当我将 "close-popup" 添加到 class 时,弹出窗口会关闭但没有其他

我尝试捕获弹出窗口的 close/closing 但这也导致 JS 无响应。我试过这个:

$$('.popup-stats').on('popup:opened', function () {
console.log('About Popup opened') 
});
$$('.popup-stats').on('popup:close', function () {
console.log('About Popup is closing')
});
$$('.popup-stats').on('popup:open', function () {
console.log('Services Popup is opening')
});
$$('.popup-stats').on('popup:closed', function () {
console.log('Services Popup is closed')
});
$$('.close-popup').on('click', function () {
console.log('Services Popup is closed')
});

知道如何解决这个问题,以便我可以关闭弹出窗口并使用导航栏中的链接吗?

我还可以补充一点,我尝试从动态弹出窗口切换到动态页面,结果相同。

好的,部分答案找到了!我在 DOM 中的弹出窗口之前添加了我的事件监听器。所以,现在我可以触发 JS:

$$('.close-popup').on('click', function () {
console.log('Services Popup is closed')
});

$$('.navbarIcon').on('click', function (e) {
console.log("Hello");
});

将其直接放在 myApp.popup(popupHTML);

之后

但是,我无法触发 'popup:close''popup:closed' 事件。

有什么想法吗?

只要动态加载新元素,希望你用这种方式监听事件:

$$(document).on('popup:closed', '.popup-stats', function () {
    console.log('Services Popup is closed');
});

另外不要忘记将代码包含在具有弹出窗口的当前页面的 onPageInit 函数中。