Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么AngularJS会破坏自引用锚链接?_Javascript_Html_Angularjs - Fatal编程技术网

Javascript 为什么AngularJS会破坏自引用锚链接?

Javascript 为什么AngularJS会破坏自引用锚链接?,javascript,html,angularjs,Javascript,Html,Angularjs,如果你在这样的地方 http://www.domain.com/index.html 。。。你有一个指向同一位置的链接 <a href="/index.html">My Link</a> 。。。然后点击链接什么也不做。通常情况下,你会像往常一样被重定向到页面;刷新页面的简便方法(无需进行完全刷新) 我已经追查到这种奇怪行为的罪魁祸首是安格拉斯 观察以下示例: <body> <a href="">Sample Link</a&g

如果你在这样的地方

http://www.domain.com/index.html
。。。你有一个指向同一位置的链接

<a href="/index.html">My Link</a>

。。。然后点击链接什么也不做。通常情况下,你会像往常一样被重定向到页面;刷新页面的简便方法(无需进行完全刷新)

我已经追查到这种奇怪行为的罪魁祸首是安格拉斯

观察以下示例:

<body>
    <a href="">Sample Link</a>

    <script>
        var SampleApp = angular.module("SampleApp", []);
    </script>
</body>

var SampleApp=angular.module(“SampleApp”,[]);

通过单击链接,浏览器将尝试转到同一位置(因为href为空)这是正常的

现在让我们激活角度:

<body ng-app="SampleApp">
    <a href="">Sample Link</a>

    <script>
        var SampleApp = angular.module("SampleApp", []);
    </script>
</body>

var SampleApp=angular.module(“SampleApp”,[]);

点击链接什么也不做


为什么AngularJS会以这种方式断开链接?有什么明显的原因让我错过了吗?

为什么Angular会阻止
href
的经典行为?

发件人:

AngularJS预先绑定了一个指令,它可以防止 省略href属性时链接上的默认操作。这 允许我们使用a标记和 ng click指令。例如,我们可以调用
a
标记,如下所示:

<a ng-click='showFAQ()'>Frequently Asked Questions</a>
常见问题
使用a标记而不使用默认导航操作非常方便,如下所示: 一些CSS框架使用a标记来呈现不同类型的 视觉元素,其中导航操作没有多大意义。 例如,Twitter的Bootstrap CSS框架使用a标记 在选项卡和手风琴组件中呈现标题


要保留的关键字是:“handy”

角度覆盖
a
标记:

这里要注意的行是:

      // if we have no href url, then don't navigate anywhere.
      if (!element.attr('href')) {
        event.preventDefault();
      }
Angular之所以这样做是因为,它仅在Angular和scope完全加载后设置
href
,从而防止用户意外进入
/{{pageUrl}/


如果你想重新加载页面,你应该看看Angular提供的
$location
服务。

应该会给出你想要的完美答案。添加
target=“\u self”
就可以了。@RowanFreeman这也是我所做的。工作起来很有魅力。