由于路由是在提供者级别定义的,因此通常只能在配置块中定义新的路由。问题在于,在配置块中,所有重要服务仍未定义(最值得注意的是
$http)。因此,表面上看起来w无法动态定义路由。
现在,事实证明, 实际上在应用程序生命周期的任何时候添加/删除路由都非常容易! 查看
$route
源代码,我们可以看到所有路由定义都被简单地保存在
$route.routes哈希中,可以在任何时间点对其进行修改(简化示例):
myApp.controller('MyCtrl', function($scope, $route) { $scope.defineRoute = function() { $route.routes['/dynamic'] = {templateUrl: 'dynamic.tpl.html'}; };});
这是演示此 *** 作的jsFiddle:http :
//jsfiddle.net/4zwdf/6/
实际上,如果我们想接近AngularJS所做的事情,则路由定义逻辑应该稍微复杂一点,因为AngularJS还在定义重定向路由以正确处理最后的路由
/(使其有效地为可选)。
因此,尽管上述技术可行,但我们需要注意以下几点:
- 此技术取决于内部实现,如果AngularJS团队决定更改定义/匹配路由的方式,则该技术可能会中断 。
- 也可以定义
otherwise
使用的路由$route.routes
是默认路由存储在相同的散列的下null
键
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)