我正在编写一个非常简单的Angular应用程序来显示有关足球锦标赛的信息.对于数据库中的每个锦标赛,我想显示匹配或统计信息的视图,所以我正在实现这个简单的URL方案:
foo/matches:比赛Foo的比赛,foo/stats:锦标赛Foo的统计数据.该index.html文件的结构如下:
<nav ng-controller="NavController">
<ul>
<li> <a href="#/{{ t }}/matches"> Matches </a>
<li> <a href="#/{{ t }}/status"> Stats </a>
</ul>
</nav>
<div ng-view></div>
Run Code Online (Sandbox Code Playgroud)
并且路由配置如下:
app.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/:t/matches', {templateUrl: 'partials/matches.html', controller: 'MatchesController'})
.when('/:t/stats', {templateUrl: 'partials/stats.html', controller: 'StatsController' })
}]);
Run Code Online (Sandbox Code Playgroud)
我的问题是{{ t }}HTML 中的那些链接.我想要链接将视图更改为当前锦标赛的统计数据或匹配列表.但由于链接在视图之外,因此他们无法访问路由参数(我尝试注入,$routeParams而我得到的只是一个空对象).
总之,我无法创建用于更改其外部视图的链接.导航栏不知道当前的锦标赛是什么.
我怎样才能(以及最好的方法)访问视图的当前状态(在本例中为当前锦标赛)?
在阅读了一些有关作用域的内容后,我了解了它们是如何嵌套的。我简单地通过用新控制器包装视图和导航栏来解决我的问题:
<div ng-controller="NavController">
<nav>
<ul>
<li> <a href="#/{{ t }}/matches"> Matches </a>
<li> <a href="#/{{ t }}/status"> Stats </a>
</ul>
</nav>
<div ng-view></div>
</div>
Run Code Online (Sandbox Code Playgroud)
该视图将继承 NavController 的原型范围。我在外部范围中初始化了一个对象,并将所需的值分配给内部控制器中的它的属性之一:
app.controller('NavController', function ($scope) {
$scope.currentTournament = {};
});
app.controller('MatchesController', function ($scope, $routeParams) {
// ...
$scope.currentTournament.id = $routeParams.t;
});
app.controller('StatsController', function ($scope, $routeParams) {
// ...
$scope.currentTournament.id = $routeParams.t;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4581 次 |
| 最近记录: |