2

我想在不使用的情况下重新加载模板和连接的控制器$routeProvider,因为我的路径结构不适合.when(...). 我想用来$location.path()读取 URL 并设置所需的操作。

但是:如果 URL 的路径发生变化,模板不会自动更新,控制器也不会重新加载。

有没有办法说这样的话?

angular.module('myApp').controller('ctrl').reload()
4

2 回答 2

0

我建议研究由编写 Angular 的同一个人编写的 Angular UI 路由器。它会让你过渡到不同的状态,这听起来像是你正在尝试做的事情。

https://github.com/angular-ui/ui-router

于 2013-08-13T16:07:36.217 回答
0

我的解决方案:不要使用路线!只需更新模板的变量,控制器不需要更新(只需更新数据):

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>
于 2013-08-16T14:14:55.110 回答