Остановить AngularJS от кэширования html между маршрутами
У меня есть два маршрута на странице, подключенной к Angular JS.
одна страница имеет форму, из которой вы можете сохранить некоторую информацию, angular, похоже, не запрашивает html, когда я переключаюсь между маршрутами.
Я попытался сделать $httpProvider.по умолчанию.cache = false;
в основном для одного маршрута я не хочу, чтобы Angular кэшировал html, для других маршрутов это действительно хорошо.
код здесь:
angular.module('userAccount', ['ngRoute', 'ngAnimate'])
.config(['$routeProvider', '$locationProvider', '$httpProvider',
function ($routeProvider, $locationProvider, $httpProvider) {
//$httpProvider.defaults.cache = false;
$locationProvider.hashPrefix('');
$routeProvider
.when('/UserProfile/:action', {
reloadOnSearch: false,
cache: false,
templateUrl: function (params) {
return '/UserProfile/' + params.action;
},
controller: 'UserProfCtrl'
})
.when('/UserDashboard/:action', {
templateUrl: function (params) {
return '/UserDashboard/' + params.action;
},
controller: 'UserDashCtrl'
})
.otherwise('/UserDashboard/Index');
}])
.controller('MainCtrl', ['$scope', '$route', '$routeParams', '$location',
function ($scope, $route, $routeParams, $location) {
$scope.$on('$routeChangeStart', function (next, current) {
});
this.$route = $route;
this.$location = $location;
this.$routeParams = $routeParams;
}])
.controller('UserProfCtrl', ['$routeParams', function ($routeParams) {
this.name = "UserProfCtrl";
this.params = $routeParams;
}])
.controller('UserDashCtrl', ['$routeParams', function ($routeParams) {
this.name = "UserDashCtrl";
this.params = $routeParams;
}]);
обратите внимание, что я удалил здесь некоторый несвязанный код манипуляции ui.
3 ответов
у меня такая же проблема в моем гибридном мобильном приложении и решена путем добавления кэша: false в моем маршруте.js
$stateProvider.state('stateName', {
cache: false,
url : '/url',
templateUrl : 'template.html'
})
надеюсь, что это решит вашу проблему.
вы можете попробовать добавить строку запроса с url
return '/views/' + params.action+'?'+$.now();
Я знаю его поздно, но это может помочь кому-то
Я просто использовал это перед моими маршрутами, и это сработало.
myApp.run(function($rootScope, $templateCache) {
$rootScope.$on('$viewContentLoaded', function() {
$templateCache.removeAll();
});
});
после поиска на многих сайтах я не нашел правильного решения этой проблемы, но, наблюдая за вопросом и ответом в этом посте, я сделал следующее решение, чем решил свою проблему (нет вообще).
Если я нажал два раза подряд на ссылку продуктов, второй clic не перезагружает / оценивает содержимое, но если я нажал на другую ссылку, а затем нажмите на ссылку produtcs, angular перезагрузите содержимое этого.
var app = angular.module("myApp", ["ngRoute"]);
app.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
$routeProvider
.when("/", {
templateUrl : "main.php"
})
.when("/productos", {
disableCache: true,
templateUrl : function (params) {
return "productos.php?" + $.now();
}
})
.when("/contacto", {
templateUrl : "contacto.php"
})
$locationProvider.html5Mode(true);
}]);