我创建了一个简单的工厂来存储来自我的authService的值:
app.factory("subfactory",
function() {
var subValue = {};
return {
set: set,
get: get
};
function get() {
return subValue;
}
function set(value) {
subValue = value;
}
});
我在authservice中保存了这样的价值 - 这不是完整的服务,只是使用subfactory.set()
显示我在哪里保存值的代码段:
mgr.getUser().then(function (user) {
if (user) {
var idToken = user.id_token;
var dataIdToken = getDataFromToken(idToken);
subfactory.set(dataIdToken.sub);
} else {
//console.log("User not logged in");
}
});
但是当我尝试在控制器中读取对象时它是空的:
vm.onGridLoad = function() {
var storedValue = subfactory.get();
console.log(storedValue);
答案 0 :(得分:1)
我会以不同的方式写工厂,但那只是我。
app.factory("subfactory",
function() {
var service = {};
service.subValue = {};
service.save = save;
return service;
function save(value) {
service.subValue = value;
}
});
然后你将工厂注入你需要的任何控制器。 返回服务对象时不需要get方法,只需使用service.subValue即可返回值。如果您不喜欢它,那么随意将其更改为您喜欢的任何内容。
代码未经测试但应足够接近以解决您的问题。
您没有指定您拥有什么样的角度应用程序,是否为水疗中心?在初始保存后重新加载页面?例如,如果您在导航到另一个页面时重新加载页面,则JavaScript将重新加载,您将丢失工厂中保存的状态。在这种情况下,您可以存储您想要保存的任何内容,例如localStorage。
答案 1 :(得分:0)
在您的服务上使用new Thread( new MyRunnable( "RUN_A", true ), "A" ).start(); //$NON-NLS-1$ //$NON-NLS-2$
new Thread( new MyRunnable( "RUN_B", false ), "B" ).start(); //$NON-NLS-1$ //$NON-NLS-2$
private static class MyRunnable implements Runnable {
private String name;
private boolean singleColor;
public MyRunnable( String name, boolean singleColor ) {
this.name = name;
this.singleColor = singleColor;
}
@Override
public void run() {
Color colorA = null;
Color colorB = null;
if ( singleColor ) {
colorA = new Color( Display.findDisplay( Thread.currentThread() ), 255, 0, 128 );
} else {
colorA = new Color( Display.findDisplay( Thread.currentThread() ), 193, 98, 107 );
colorB = new Color( Display.findDisplay( Thread.currentThread() ), 146, 190, 137 );
}
Display display = new Display();
Image image = new Image( display, 1000, 1000 );
GC gc = new GC( image );
int items = 20;
for ( int i = 0; i < items; i++ ) {
for ( int j = 0; j < items; j++ ) {
int x = i * ( 1000 / items ) + ( 1000 / items / 4 );
int y = j * ( 1000 / items ) + ( 1000 / items / 4 );
gc.setAntialias( (int) ( Math.random() * 2 ) );
Color bg;
if ( singleColor ) {
bg = colorA;
} else {
if ( ( i + j ) % 2 == 1 ) {
bg = colorA;
} else {
bg = colorB;
}
}
gc.setBackground( bg );
gc.fillRectangle( x, y, 1000 / items / 2, 1000 / items / 2 );
}
}
ImageLoader imageLoader = new ImageLoader();
imageLoader.data = new ImageData[] { image.getImageData() };
imageLoader.save( "C:\\img\\" + name + ".png", SWT.IMAGE_PNG ); //$NON-NLS-1$ //$NON-NLS-2$
gc.dispose();
image.dispose();
display.dispose();
colorA.dispose();
if ( colorB != null ) {
colorB.dispose();
}
}
}