【问题标题】:Angular ui sref not working with touch eventsAngular ui sref 不适用于触摸事件
【发布时间】:2015-09-24 19:44:54
【问题描述】:

我有一个带有 ui-sref 属性的链接和一个 jQuery 触摸事件,但问题是当我点击这个元素时,jQuery 处理程序正在运行,但 ui-sref 没有。

jquery:

$('#fa-bar, #mobile-nav li').on('touchstart', function( e ) {
      e.stopPropagation();
      $('#mobile-nav').toggleClass('toggle-mobile-nav');
      $('#mobile-nav').toggleClass('prevent-scroll');
 });

HTML:

 <li ui-sref="state" ui-sref-active="nav-active"><a>Link</a></li>

【问题讨论】:

    标签: javascript jquery angularjs angular-ui-router


    【解决方案1】:

    查看docs 和此example

    但是,stopEvent 也调用事件对象方法 event.stopPropagation,它可以防止事件进一步冒泡进入 DOM。请注意,表格本身有一个 onclick 事件处理程序,该处理程序应该在单击表格时显示一条消息。但是 stopEvent 方法已经停止了传播,所以在表中的数据更新后,事件阶段就有效地结束了,并显示了一个警告框来确认这一点。

    这是纯 javascript,也适用于 AngularJS。您对 e.stopPropagation() 的调用会阻止 ui-router 获取事件。如果您想为某些内容添加 URL(这样您仍然可以使用浏览器的在新标签页中打开功能),但希望在正常点击中获得不同的行为,这有时会很方便。 p>

    【讨论】:

    • 那么我该如何同时使用这两种方法呢?
    • 去掉e.stopPropagation();这一行应该没问题
    • 但它不会冒泡到身体,因为我也有处理程序?
    • 我认为 ui-router 会在处理后停止传播(这是它阻止浏览器正常跟随链接行为的方式)。
    • 它仍然无法正常工作,jquery 运行但 ui sref 没有重定向到状态。
    【解决方案2】:

    使用最新或至少 0.3.2 的 ui-router

    <script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.3.2/angular-ui-router.min.js"></script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-24
      • 1970-01-01
      • 2011-12-11
      • 1970-01-01
      • 2022-10-18
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      相关资源
      最近更新 更多