【发布时间】:2013-02-14 02:32:45
【问题描述】:
我有以下配置:
$routeProvider
.when('/cars', { templateUrl: 'app/cars/index.html', controller: 'CarsCtrl', reloadOnSearch: false })
.when('/bikes', { templateUrl: 'app/bikes/index.html', controller: 'BikesCtrl', reloadOnSearch: false });
在我的根 index.html 的某处有一个:
<a href="#/cars">Cars</a>
<a href="#/bikes">Bikes</a>
<div ng-view></div>
现在,我希望两个视图同时在 DOM 中加载和生成,并根据路由/URL 显示其中一个。
类似于以下内容(不是实际的工作代码,只是为了给您一个想法)。
app.js:
$routeProvider
.when('/cars', { controller: 'CarsCtrl', reloadOnSearch: false })
.when('/bikes', { controller: 'BikesCtrl', reloadOnSearch: false });
根索引.html:
<a href="#/cars">Cars</a>
<a href="#/bikes">Bikes</a>
<div ng-include="'app/cars/index.html'" ng-show="carsVisible"></div>
<div ng-include="'app/bikes/index.html'" ng-show="bikesVisible"></div>
更新:我知道 ng-view 可以做到这一点,但差异是存在的,如果很微妙的话。我希望每个视图的 html 生成一次并始终保留在 DOM 中。
【问题讨论】:
-
使用 ng-view 无法做到这一点。但问题是,你为什么真的要这样做。是因为您想“预处理”每条路线以使其加载更快吗?路由已经相当快了,除非你的控制器需要一些异步数据,在这种情况下你会在路由定义对象中使用'resolve',再加上一些用于在后台获取异步数据的应用程序初始化代码。
标签: javascript angularjs angularjs-routing