即使在 angular 中的同一路线上,当人们点击返回按钮时,我是否可以强制控制器重新加载一些数据?

Can I force controller to reload some data when people hit back button even on the same route in angular?

在我的 angular 应用中,这是我的路线模式:

 $routeProvider
    .when('/DocumentUploader/folder/:folderid?', {
        templateUrl: '/FileManagers/views/items.html',
        controller: 'ItemsCtrl',
        controllerAs: 'items'
    })
    .otherwise({
        redirectTo: '/DocumentUploader/folder'
    });

页面加载时,默认路由为: http://localhost:5460/Workbenchv2.cshtml#/DocumentUploader/folder

所以这将转到根文件夹。

然后用户可以点击一个文件夹名称,路线变为 http://localhost:5460/Workbenchv2.cshtml#/DocumentUploader/folder/92E39760-156D-4C62-A295-E4D1C20706CD(文件夹的内部 ID)

现在如果用户点击后退按钮,angular 将不会重新加载控制器(因为它是相同的路由),所以我无法刷新我的数据。

是否可以强制angularjs重新加载控制器,即使路由相同?

我在这里创建了一个 Plunker:Plunker Link

在我的例子中,当用户点击后退按钮时,控制器被重新加载。这是我正在使用的控制器:

myApp.controller('ItemsCtrl', ['$scope', '$routeParams', 
  function($scope, $routeParams){
    var folderId = $routeParams.folderid;

    if(!folderId){
      $scope.msg = 'You are in root folder';
    } else {
      $scope.msg = 'You are in folderId=' + folderId;
    }
  }
]);