重新初始化Angular.js控制器

时间:2013-07-01 21:09:57

标签: javascript angularjs angularjs-scope angularjs-controller

如果你有一个控制器来操纵Angular.js中的$ scope变量,是否有一种惯用的方法:

  • 重置控制器的$ scope和
  • 重启控制器初始化?

对于复杂的控制器,不必将每个变量重置为其初始值非常方便,特别是如果您真正想要的是控制器和示波器的简单重新初始化。但是,通过$location.path()再次导航到同一个网址无济于事。

修改:假设我无法使用任何$window.location黑客攻击,因为这会违反Chrome打包应用中的CSP。

1 个答案:

答案 0 :(得分:22)

在询问之后,我终于找到了一种方法来解决这个问题,使用$route.reload()

myapp.Controller('SampleController', function($location, $route) {

  $scope.navTo = function(url) {
    if ($location.path() === url) {
      $route.reload();
    } else {
      $location.path(url);
    }
  }

});

我仍然在想,必须有一些更优雅的解决方案,但这绝对适用于我。