我们有一个基于https://github.com/davemo/end-to-end-with-angularjs组合angularJS和laravel的项目。但是,在缓存方面我们遇到了一个问题。
我们有一个显示URL参数的模板,这些参数由控制器$scope.param1 = $routeParams.userId;
当您转到页面http://localhost/#/foo/bar
时,模板会显示
<h1>foo</h1>
<h2>bar</h2>
但是,当您点击进入,或将网址更改为http://localhost/#/thunk/foo
时,您仍会看到显示的模板
<h1>foo</h1>
<h2>bar</h2>
直到您执行页面的重新加载。然后你得到:
<h1>thunk</h1>
<h2>foo</h2>
有关导致问题的原因以及angularJS是否具有忽略缓存功能的任何想法?
示例代码
var app = angular.module("app", ['ngSanitize']);
/********************************/
/*
* Routes
*/
app.config(function($routeProvider) {
// User profile
$routeProvider.when('/:userId' , {
templateUrl : 'templates/profile/profileLanding.html' ,
controller : 'ProfileLandingController' ,
resolve : {
profileDetails : function(UserProfileService) {
return UserProfileService.getDetails();
}
}
});
});
/********************************/
/*
* Models
*/
app.run(function($rootScope, $location, AuthenticationService, FlashService) {
// User pofile
app.factory("UserProfileService" , function($http , $route) {
// Get id from param
var id = $route.current.params.userId;
return {
// Get user details
getDetails : function() {
return $http({
url: '/user',
method: "GET",
params: {user_id: id}
});
}
}
});
/********************************/
/*
* Controllers
*/
app.controller("ProfileLandingController" , function($scope , $routeParams , profileDetails) {
$scope.param1 = $routeParams.userId;
$scope.details = profileDetails.data;
});