我的角度应用程序几乎依赖于一个api调用(例如
"scripts": {
"postinstall": "./node_modules/protractor/bin/webdriver-manager update"
}
)。
我有多个需要使用该api请求中的数据的路由,模块和控制器。例如,我有:
/api/example
每个功能控制器都需要来自public
|__feature1
|__ feature1.controller.js
|__ feature1.route.js
|__feature2
|__ feature2.controller.js
|__ feature2.route.js
|__core
|__ core.controller.js
|__ core.nav.controller.js
|__ core.route.js
|__ core.service.js
|__ app.js
的数据。
/api/example
core.service.js
通常我会在angular.module('myApp')
.factory('MainService', ['$resource'
function($resource) {
return $resource('/api/example', {}, {
get: {
method: 'GET'
}
});
}
]);
中执行某些操作:
feature1/feature.controller.js
然后我会在angular.module('feature1')
.controller('Feature1Ctrl', ['MainService',
function(MainService){
MainService
.get()
.$promise
.then(function(data){
console.log(data);
});
}
]);
feature2/feature2.controller.js
我的应用程序是否可以立即调用API并缓存请求数据,以便其他控制器可以访问而无需发出多个请求。
所以我基本上可以做一些事情,例如:
angular.module('feature2')
.controller('Feature2Ctrl', ['MainService',
function(MainService){
MainService
.get()
.$promise
.then(function(data){
// do something with the SAME data again
console.log(data);
});
}
]);
答案 0 :(得分:1)
如果我理解正确,你可以毫不费力地缓存它。这样添加cache : true
angular.module('myApp')
.factory('MainService', ['$resource'
function($resource) {
return $resource('/api/example', {}, {
get: {
method: 'GET',
cache : true // -- cached
}
});
}
]);
如果您需要更复杂的解决方案,我还建议您查看$cacheFactory
。