不要在$ location.hash之后将哈希添加到URL

时间:2018-06-21 09:29:20

标签: javascript angularjs

我的某些表单页面很高。按下这样的“保存”按钮

之后,我编写了一个滚动到表单上第一个错误的函数
vm.scrollToError = function() {
    var anchor;

    for (var prop in vm.InwardLeaseForm.$error) {
        anchor = vm.InwardLeaseForm.$error[prop][0].$name;
        break;
    }

    $location.hash(anchor);
    $anchorScroll.yOffset = 300;
    $anchorScroll(anchor);
};

我的问题是,这会将带有字段ID的哈希添加到URL。有没有办法做到这一点,但在这种情况下不将这个额外的#vm.InwardLeaseForm_integerField_contractTerm_2添加到URL?

1 个答案:

答案 0 :(得分:1)

  

我的问题是,这会将带有字段ID的哈希添加到URL。

好吧,$location.hash(anchor);就是这样做的。因此,如果您不希望它发生,请将其删除...

  

我认为这对于$ anchorScroll起作用是必需的。

阅读文档很有帮助;-)-https://docs.angularjs.org/api/ng/service/$anchorScroll

  

调用时,它将滚动到与指定的hash相关的元素,或者滚动到(如果省略)与$ location.hash()的当前值相关的元素

因此,如果您未明确指定要滚动到的元素,则此值仅会返回当前位置的哈希值-但由于您使用的是$anchorScroll(anchor);,因此在此之前修改位置哈希不会甚至有必要在这里。