【问题标题】:AngularJS multiple routes with same template shouldn't rerenderAngularJS 具有相同模板的多个路由不应重新渲染
【发布时间】:2015-08-27 04:44:30
【问题描述】:

我有几个使用相同模板的视图,只是路由参数的数量不同,我该如何设置它以便每次路由更改时都不会重新渲染视图,尝试使用reloadOnSearch: false,但是由于某种原因它没有工作。

app.config(['$routeProvider', function ($routeProvider) {
    $routeProvider
        .when('/feeds', {
            templateUrl: 'partials/feeds.html',
            controller: 'FeedsController'
        })
        .when('/feeds/:country', {
            templateUrl: 'partials/feeds.html',
            controller: 'FeedsController'
        })
        .when('/feeds/:country/:competition', {
            templateUrl: 'partials/feeds.html',
            controller: 'FeedsController'
        })
        .otherwise({
            redirectTo: '/feeds'
        });
}]);

【问题讨论】:

  • 你是怎么解决你的问题的?

标签: angularjs templates routes rerender


【解决方案1】:

根据documentation,你不能为一个路由定义多个path's。因此,在您的情况下,您应该定义两个唯一的 routes ,例如:

app.config(['$routeProvider', function ($routeProvider) {
    $routeProvider
    .when('/feeds/:country/:competition/:event', {
        templateUrl: 'partials/event.html',
        controller: 'EventController'
    })
    .when('/feeds/:country/:competition', {
        templateUrl: 'partials/feeds.html',
        controller: 'FeedsController'
    })
    .otherwise({
        redirectTo: '/feeds'
    });
}]);

不同之处,请始终使用完整参数调用此 URL,例如:

http://yourapplication/feeds/false/false/false

http://yourapplication/feeds/1/false/false

http://yourapplication/feeds/1/2/false

http://yourapplication/feeds/1/2/3

调用FeedsController 的人仍然是唯一的,只有两个参数:

http://yourapplication/feeds/1/2/

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-19
  • 1970-01-01
  • 1970-01-01
  • 2013-03-27
  • 2019-03-02
  • 2015-12-24
  • 2015-12-30
相关资源
最近更新 更多