有两种方法:
选项1
按照https://stackoverflow.com/a/13173667/17815中的建议直接修改路由对象
$route.routes['/dynamic'] = {templateUrl: 'dynamic.tpl.html'};
注意:您需要同时添加“/newurl”和“/newurl/”(带有斜杠)。查看角度代码:
this.when = function(path, route) {
routes[path] = extend({reloadOnSearch: true}, route);
// create redirection for trailing slashes
if (path) {
var redirectPath = (path[path.length-1] == '/')
? path.substr(0, path.length-1)
: path +'/';
routes[redirectPath] = {redirectTo: path};
}
return this;
};
选项 2
您可以参考$routeProvider
:
var $routeProviderReference;
var app = angular.module('myApp', ['myApp.controllers']);
app.config(['$routeProvider', function($routeProvider) {
$routeProviderReference = $routeProvider;
}]);
请参阅http://blog.brunoscopelliti.com/how-to-defer-route-definition-in-an-angularjs-web-app
这污染了全局命名空间,但您仍然使用接口来改变routes
对象。我想这使它更容易维护。也许您可以尝试将其放入闭包中。
无论如何,请记住,您应该在提供程序中执行此操作以使应用程序健壮。“使用前定义”。