刷新时点击链接与实际的网址

我使用routeProvider为我的url定义控制器和模板。

当我点击与实际位置相同的链接时,没有任何反应。 如果用户点击这样的链接,即使位置没有改变,我也会调用reload()方法。 换句话说,如果我将位置设置为相同的值,我希望它的行为与我将它设置为不同的值相同。

有没有办法配置routeProvider或locationProvider自动执行它? 或者什么是正确的做法呢? 这是往返应用程序中的stadard行为,但如何在angularjs中执行此操作?

我也在谷歌组织上询问过它。

更新:

这个问题得到了很多观点,所以我会试着解释我是如何解决我的问题的。

我为Renan Tomal Fernandes在评论中提出的链接创建了一个自定义指令。

angular.module('core.directives').directive('diHref', ['$location', '$route',
        function($location, $route) {
    return function(scope, element, attrs) {
        scope.$watch('diHref', function() {
            if(attrs.diHref) {
                element.attr('href', attrs.diHref);
                element.bind('click', function(event) {
                    scope.$apply(function(){
                        if($location.path() == attrs.diHref) $route.reload();
                    });
                });
            }
        });
    }
}]);

该指令然后用于我的应用程序中的所有链接我希望具有此功能。

<a di-href="/home/">Home</a>

这个指令的作用是根据di-href href属性为你设置href属性,所以angular可以像往常一样处理它,当你将鼠标悬停在链接上时,你可以看到url。 此外,当用户点击它并且链接的路径与当前路径相同时,它将重新加载路由。


你应该使用$ route.reload()来强制重载。

我不知道是否有'自动'的方式来做到这一点,但你可以使用ng键点击这些链接


在路由配置中为定义的url添加/(斜线)

今天我遇到了类似的问题,我在我的网页中有一个链接,当我点击它时,我想每次都重新加载ng-view,这样我就可以从服务器刷新数据。 但是,如果URL位置不变,角度不会重新加载ng视图。

最后,我找到了解决这个问题的办法。 在我的网页中,我将链接href设置为:

  • <a href="#/test">test</a>
  • 但在路由配置中,我设置了:

  • $routeProvider.when('/test/', { controller: MyController, templateUrl:'/static/test.html' });
  • 不同的是url中的最后一个斜杠。 当我第一次点击href="#/test"时,将URL重定向到#/test/ ,并加载ng-view。 当我点击它第二次,因为当前的网址是#/test/ ,它不等于链接中的网址( href="#/test" )我点击,所以Angular触发位置更改方法并重新加载ng-除此之外,Angular还将URL重定向到#/test/ 。 下次我点击网址,角度再次做同样的事情。 这正是我想要的。

    希望这对你有用。


    您可以在链接上添加_target='_self'以强制页面重新加载。

    例如

    <a href="/Customer/Edit/{{customer.id}}" target="_self">{{customer.Name}}</a>
    

    我在IE和Firefox上测试了1.0.5和1.2.15版本。 似乎工作正常。

    以下是AngularJS站点的更多信息:

    Html链接重写

    当您使用HTML5历史API模式时,您将需要不同浏览器中的不同链接,但您只需指定常规URL链接,例如:

    <a href="/some?foo=bar">link</a>
    

    当用户点击此链接时,

  • 在旧版浏览器中,网址更改为/index.html#!/some?foo=bar
  • 在现代浏览器中,URL更改为/some?foo=bar
  • 在以下情况下,链接不会被重写; 相反,浏览器将执行整页重新加载到原始链接。

  • 包含目标元素的链接示例: <a href="/ext/link?a=b" target="_self">link</a>

  • 转到不同域的绝对链接示例: <a href="http://angularjs.org/">link</a>

  • 以'/' <a href="/not-my-base/link">link</a>在定义基础时导致不同的基本路径示例: <a href="/not-my-base/link">link</a>

  • 链接地址: http://www.djcxy.com/p/77939.html

    上一篇: refresh when clicked on link with actual url

    下一篇: router based view on query parameter change