angularjs - 如何防止在 Angular Js1.2 中重定向 <a href ="#something">

标签 angularjs twitter-bootstrap migration

我在我的应用程序中使用 AngularJs-1.0.7 和 Bootstrap。最近我从 AngularJs-1.0.7 迁移到 AngularJs-1.2。我正在使用 Bootstrap 的 Accordion 和选项卡。

选项卡的 HTML 代码包含 <a href="#id_for_content">如下图所示。

<ul id="myTab" class="nav nav-tabs">
    <li class="active"><a href="#firstTab" data-toggle="tab">Home</a></li>
    <li><a href="#secondTab" data-toggle="tab">Profile</a></li>
</ul>

<div id="myTabContent" class="tab-content">
    <div class="tab-pane fade in active" id="firstTab">
      <p>Content for first tab.</p>
    </div>
    <div class="tab-pane fade" id="secondTab">
      <p>Content For second tab.</p>
    </div>
</div>

在 Angular 的旧版本中,只有当我们提供像 <a href="#/firstTab"> 这样的 anchor 标记时,才会发生路由更改。 。但 AngularJs-1.2 重定向 <a href="#firstTab"> 。它不考虑 /之间#firstTab 。因此,当单击选项卡时,它会重定向到 http://web_url/#/firstTab 。如何解决这个问题?

<小时/>

我的解决方案

我找到了解决这个问题的方法。我为标签编写了一条指令。在该指令中,我检查了 href 属性。如果匹配则阻止其默认行为。检查以下代码。

app.directive('a', function() {
    return {
        restrict: 'E',
        link: function(scope, elem, attrs) {
            if(attrs.href === '#firstTab'|| attrs.href === '#secondTab'){
                elem.on('click', function(e){
                    e.preventDefault();
                });
            }
        }
   };
}); 

但这种方法的问题是,我必须检查这里的每个选项卡 ID 或 Accordion ID。如果我为它们使用动态 ID,则无法 checkin 指令。

如果您能找到更好的解决方案,请告诉我们。

最佳答案

只需将其添加到您的链接中即可:

target="_self"

你已经准备好了;)

关于angularjs - 如何防止在 Angular Js1.2 中重定向 <a href ="#something">,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19995091/

相关文章:

Angularjs ng-show指令将 'N'和 'NO'解释为虚假值

javascript - AngularJS渲染更新记录+Laravel后端

css - 在 flexbox 计算高度后渲染传单图

javascript - 单击按钮运行函数并添加Class

javascript - 如何在不访问互联网和本地文件系统的情况下使用 bootstrap javascript 库?

ruby-on-rails - 汇总迁移?

python - 为什么在python中打开多个游标时sql会挂起?

javascript - 在发送之前过滤 $http 请求数据

c# - 将 Bootstrap 连接到 ASP.NET _Layout.cshtml 文件

spring - 如何调试卡住的迁移