0
В моем app.run Я вызываю MenuSvc для заполнения $ state, а затем я вызываю LayoutCtrl, чтобы заполнить навигацию DOM, предположительно с кешем, и избежать другого вызова сервера ,
1. $ Http:
/* @ngInject */ app.factory('MenuSvc', MenuSvc); function MenuSvc($http, MenuSvcCache){ return { all: function(){ return $http({ method: 'GET', url: 'api/menu.json', cache: MenuSvcCache }); } } }; MenuSvc.$inject = ['$http', 'MenuSvcCache'];
2. $ CacheFactory:
/* @ngInject */
app.factory('MenuSvcCache', MenuSvcCache);
function MenuSvcCache($cacheFactory){
return $cacheFactory('MenuSvc')
};
MenuSvcCache.$inject = ['$cacheFactory'];
3. LayoutCtrl:
ng.module('app.Layout').controller('LayoutCtrl', LayoutCtrl); function LayoutCtrl($cacheFactory, $http, MenuSvc, MenuSvcCache) { var layout = this; layout.pageTitle = 'LayoutCtrl'; Init(); function Init(){ if (MenuSvcCache) { layout.menuItems = MenuSvcCache.get(); console.log(MenuSvcCache); } else { MenuSvc.all().success(function (data) { layout.menuItems = data; console.log(MenuSvcCache); }) .error(function (error) { console.log('Error: ' + error.message) }); } } }; LayoutCtrl.$inject = ['$cacheFactory', '$http', 'MenuSvc', 'MenuSvcCache'];
Излишне говорить, что он не работает. Кто-нибудь видит мою ошибку?