即使在 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;
}
}
]);
在我的 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;
}
}
]);