一尘不染

重新初始化Angular.js控制器

angularjs

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

  • 重置控制器的$ scope,然后
  • 重新启动控制器初始化?

对于复杂的控制器,不必将每个变量都重置为其初始值将非常方便,特别是如果您真正想要的是对控制器和范围进行简单的重新初始化。通过再次导航到相同的URL
$location.path()并没有帮助。

编辑:假设我不能使用任何$window.location黑客工具,因为这会违反Chrome打包应用中的CSP。


阅读 316

收藏
2020-07-04

共1个答案

一尘不染

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

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

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

});

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

2020-07-04