我对Angular很新,我在配置IdleProvider和KeepaliveProviders方面遇到了问题。请理解这个问题:我已经正确配置了这两个提供程序,我的空闲超时正在运行。我正在寻找的是通过从属性文件中读取这些值来为这些提供者提供值。我已经能够从属性文件中读取值,但我无法将它们传递给我的.config()方法中的提供者。
我正在使用角度1.4.3(请不要让我升级 - 我刚刚加入了他们正在使用它的项目。
这是我在route.js中的配置方法
define(['app'], function(app) {
'use strict';
return app
.config(function($stateProvider, $urlRouterProvider, $httpProvider, KeepaliveProvider, IdleProvider) {
console.log("Idle timer is here")
IdleProvider.idle(5); //Rather than hardcoding, I want to pass from a property file
IdleProvider.timeout(5); //Rather than hardcoding, I want to pass from a property file.
KeepaliveProvider.interval(10); //Same here - pass from a property file
我有一个Service类,我在其中读取我的属性文件并将结果设置在$ sessionStorage中,但是我无法将sessionStograge注入上面的.config(..)方法,因为你只能将常量和提供者注入的.config(..)。任何帮助将不胜感激!
auth.getRedirectUrls2 = function() {
console.log("getRedirectUrls2 has been caled!!");
var promise = $http.get("resources/sessiontimeout.properties")
.then(function(response) {
console.log("In getRedirectUrl2 response is: ", response.data);
console.log("Is the damn data in the session or not: ", $sessionStorage.redirectprops);
$sessionStorage.redirectprops = response.data;
return response.data;
})
.catch(function(response) {
console.error('Gists error', response.status, response.data);
})
.finally(function() {
console.log("In getRedirectUrls2 - Finally, all is done!!");
});
$sessionStorage.redirectpromise = promise;
console.log("The promise is: ", promise);
console.log("The promise from session is: ", $sessionStorage.redirectpromise);
return promise;
};
=======编辑后续问题====
我有以下项目结构,但不知道在哪里创建提供程序。 web应用/静态/应用/ JS
另外,我可以在提供程序构造函数中创建tryConstant.layouts.idleTime吗?
我在哪里注入$ sessionStorage或服务提供商?
答案 0 :(得分:1)
您应该在配置中创建提供程序并使用提供程序,您可以在提供程序中使用服务和sessionStograge,并且可以在配置中使用提供程序。
以下是提供者的一个例子:
(function() {
'use strict';
angular
.module('app')
.run(layoutRunner)
.provider('tryConstant', constantProvider);
function constantProvider() {
var layout = {};
}
function constanntRunner() {
// check for $stateChangeStart and update the layouts if we have data.layout set
// if nothing set reset to defaults for every state
var destroyOn = $rootScope.$on('$stateChangeStart');
$rootScope.$on('$destroy', removeWatch);
function removeWatch() {
destroyOn();
}
}
})();
您可以在此处使用sessionstorage和所有内容,并更新布局对象中的值。并在配置中使用它如下
.config(function($stateProvider, $urlRouterProvider, $httpProvider, KeepaliveProvider, IdleProvider,tryConstant ) {
console.log("Idle timer is here")
IdleProvider.idle(tryConstant.layouts.idleTime);
}
答案 1 :(得分:0)
从change开始,您可以在配置服务后在空闲服务上使用setIdle
和setTimeout
函数来更改这些值。