【问题标题】:How do I make templateURL scroll into certain part of a page?如何使 templateURL 滚动到页面的某些部分?
【发布时间】:2020-08-14 10:29:40
【问题描述】:

你们能帮我处理一下我的 routeProvider 吗?

$routeProvider.when('/farm', {
        templateUrl: '/index.htm#farm'
    });

#farm 不起作用。我想要这样当有人从 Outlook 中单击 Farm 链接时,它会转到索引页面并向下滚动到 ID 为 farm 的位置。我的 div 也已经有一个农场 ID,所以我猜这没问题。

我已经阅读了很多资源和解决方案,但他们都说锚标签在 templateURL 上不起作用。我想知道你们是否有办法解决这个问题。

顺便说一下,示例链接是:www.test.com/index#farm 在 Outlook 电子邮件中单击该链接不会向下滚动到 #farm 所在的位置。 相反,它会转到索引页面并将 URL 仅转换为 /index 而没有 #farm

这是我的代码的另一部分,以防这些人弄乱它:

$locationProvider.hashPrefix('');

    $routeProvider.when('/index', {
        templateUrl: '/index.htm'
    });
    $routeProvider.when('/farm', {
        templateUrl: '/index.htm#farm'
    });
    $routeProvider.when('/error', {
        templateUrl: '/error.htm'
    });
    $routeProvider.otherwise({ redirectTo: '/index' });

我认为.otherwise 正在使它进入index.htm。 有没有其他方法可以添加另一个 routeProvider 和 templateURL 可以向下滚动到农场在索引页面中的位置?

当我尝试templateURL: '/index.html#farm' 时,它只转到/index%23farm,它不会向下滚动。

所以基本上链接是外部的(来自电子邮件),如果他们点击它,我希望他们向下滚动到 #farm 所在的位置。

【问题讨论】:

  • 你好,我也试过使用``` app.controller('farmController', function ($scope, $location, $anchorScroll, $routeParams) { }); app.run(function ($rootScope, $location, $anchorScroll, $routeParams) { $rootScope.$on('$routeChangeSuccess', function (newRoute, oldRoute) { var old = $location.hash() $location.hash($routeParams.scrollTo); $anchorScroll(); }); }) ```并将电子邮件中的链接更改为 www.test.com/#/index?scrollTo=farm 但它仍然没有工作。

标签: c# angularjs asp.net-mvc route-provider


【解决方案1】:

使用 $anchorScroll();

将 $anchorScroll 注入到您的控制器中并照此使用。

https://docs.angularjs.org/api/ng/service/$anchorScroll

 // the element you wish to scroll to.
  $location.hash('farm’);

  // call $anchorScroll()
  $anchorScroll();

【讨论】:

  • 嗨@tbone894 我想问一些事情。由于这是来自外部站点(Outlook 电子邮件),因此我不能使用 Farm 但只能使用 Outlook 的链接功能,如果他们单击此 URL:www .website.com/farm 然后据说他们会在这个站点:www.website.com/index#farm。我如何用 $anchorscroll 做到这一点?我已经尝试了很多方法,但它不起作用。如果需要,我也可以提供我的代码。真的很抱歉,我是 Angular JS 的新手。
  • 这些网址不一样。第一个将您带到农场路线,而另一个将您带到 index.html 和 #farm 元素。在电子邮件中,您应该发送与您希望他们去的地方相同的链接。所以我假设您希望他们转到您在#farm 中列出的第二个网址。因此,在连接到索引路由的控制器中,您将放置我提到的代码。
  • 啊,对了,我在想如果路由提供者访问 /farm 可以更改模板 URL,这样它在没有主题标签的电子邮件中看起来更清晰。无论如何,这就是我所做的,你能告诉我这里有什么问题吗? link我真的不知道我在做什么。抱歉,我是新手。
  • 好的,有很多事情要做。很多东西要清理。向您展示一些示例可能会更容易。让我想想怎么做。
  • codepen.io/tbone849/pen/PoPEQRR?editors=1010 我改变了很多你所做的。看看所有的cmets。试图解释一切。希望它有所帮助。
猜你喜欢
  • 1970-01-01
  • 2022-12-15
  • 1970-01-01
  • 2012-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-16
相关资源
最近更新 更多