我想在不使用的情况下重新加载模板和连接的控制器$routeProvider
,因为我的路径结构不适合.when(...)
. 我想用来$location.path()
读取 URL 并设置所需的操作。
但是:如果 URL 的路径发生变化,模板不会自动更新,控制器也不会重新加载。
有没有办法说这样的话?
angular.module('myApp').controller('ctrl').reload()
我想在不使用的情况下重新加载模板和连接的控制器$routeProvider
,因为我的路径结构不适合.when(...)
. 我想用来$location.path()
读取 URL 并设置所需的操作。
但是:如果 URL 的路径发生变化,模板不会自动更新,控制器也不会重新加载。
有没有办法说这样的话?
angular.module('myApp').controller('ctrl').reload()
我建议研究由编写 Angular 的同一个人编写的 Angular UI 路由器。它会让你过渡到不同的状态,这听起来像是你正在尝试做的事情。
我的解决方案:不要使用路线!只需更新模板的变量,控制器不需要更新(只需更新数据):
angular.module('myApp',[])
.run(['$rootScope', '$location', 'myService', function ($rootScope, $location, myService) {
$rootScope.view = "";
// Some function to read the URL
$rootScope.setRouting = function(){
var p = $location.path().split("/");
// Do things with p[0], p[1], ...
// e.g. if url is /post/123
$rootScope.view = p[0];
myService.setData(p[1]);
}
// Monitor Location changes:
$rootScope.$on('$locationChangeSuccess', function(event) {
$rootScope.setRouting();
});
// And this is useful for calling within template: ng-click="go('...')"
$rootScope.go = function(path){
$location.path(path);
}
}]);
对于 HTML:
<body>
<ng-include src="view + '.html'"></ng-include>
</body>