AngularJS 具有相同模板的多个路由不应重新渲染
Posted
技术标签:
【中文标题】AngularJS 具有相同模板的多个路由不应重新渲染【英文标题】:AngularJS multiple routes with same template shouldn't rerender 【发布时间】: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'
);
]);
【问题讨论】:
你是怎么解决你的问题的? 【参考方案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/
【讨论】:
我不能使用像:myapplication/feeds/false/false/false 这样的网址,用户必须能够输入以下任何网址:myapplication/feeds/1、myapplication/feeds/1/2 或 myapplication/feeds/1/2/3,而无需输入“false”以上是关于AngularJS 具有相同模板的多个路由不应重新渲染的主要内容,如果未能解决你的问题,请参考以下文章