首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >重新初始化Angular.js控制器

重新初始化Angular.js控制器
EN

Stack Overflow用户
提问于 2013-07-02 05:09:57
回答 2查看 22.5K关注 0票数 20

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

  • 重置控制器的$scope,
  • 重启控制器$scope

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

编辑:假设我不能使用任何$window.location攻击,因为这会违反Chrome Packaged中的CSP。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-02 06:20:08

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

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

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

});

我仍然在想,一定有更优雅的解决方案,但这对我来说肯定是有效的。

票数 24
EN

Stack Overflow用户

发布于 2015-12-21 00:34:00

如果你使用的是angular-ui-router,那么你应该这样做:

myapp.Controller('SampleController', function($state) {

    $scope.navigate = function (stateName) {
        if ($state.is(stateName)) {
            $state.reload();
        } else {
            $state.go(stateName);
        }
    }
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17413760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档