Не должен ли $cacheFactory#get() возвращать копию кэшированного объекта вместо ссылки?
Я столкнулся с ситуацией, которую я не ожидал при использовании $cacheFactory
не должны объекты, хранящиеся в кеше, не подвергаться изменениям вне $cacheFactory
, означает, что объект, возвращаемый из кэша с использованием $cacheFactory.get(), не должен отражать изменения обратно в текущий кэшированный объект.
У меня есть демонстрация: http://jsfiddle.net/vladimir_ze/s9twdbup/
1 ответ
// get model from cache and modify it
$scope.modelFromCache = cache.get('model');
$scope.modelFromCache.author.name = 'Bob';
// Telling you're right and instead of copy you get a reference
console.log($scope.modelFromCache === cache.get('model')); // true
$scope.anotherModelFromCache = angular.copy(cache.get('model'));
// Solution if you just want a copy of cache property data
console.log($scope.anotherModelFromCache === cache.get('model')); // false
Я думаю, что вы правы, и это поведение должно быть ясно, потому что
Извлекает именованные данные, хранящиеся в объекте Cache.
это вводит в заблуждение...
Ссылка https://docs.angularjs.org/api/ng/type/$ cacheFactory.Cache
Хороший улов кстати:)