20

Angular.js で $scope 変数を操作するコントローラーがある場合、慣用的な方法はありますか?

  • コントローラーの $scope をリセットし、
  • コントローラの初期化を再開しますか?

複雑なコントローラーの場合、特にコントローラーとスコープの単純な再初期化が本当に必要な場合は、すべての変数を初期値にリセットする必要がないことが非常に便利です。ただし、同じ URL に再度アクセス$location.path()しても役に立ちません。

$window.location編集:これはChromeパッケージアプリのCSPに違反するため、ハックを使用できないとします。

4

2 に答える 2

24

尋ねた直後に、最終的に を使用してこれを解決する1つの方法を見つけまし$route.reload()た。

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

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

});

もっとエレガントな解決策が必要だと私はまだ考えていますが、これは間違いなく私にとってはうまくいきます。

于 2013-07-01T22:20:08.087 に答える
2

angular-ui-router を使用している場合は、次のようにする必要があります。

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

    $scope.navigate = function (stateName) {
        if ($state.is(stateName)) {
            $state.reload();
        } else {
            $state.go(stateName);
        }
    }
});
于 2015-12-20T16:33:59.623 に答える