我正在设置以下功能以便在之后检索它。 但是,出于某种原因,它不起作用:
constructor(private nativeStorage: NativeStorage) {
// I am calling it this way:
this.userId = 123;
this.getItem("userId", this.userId);
// If I replace the shortcut by the below it works fine
/* this.nativeStorage.getItem("userId).then(
data => this.userId = data,
error => console.error(error)
); */
}
getItem(itemKey, itemValue) {
return this.nativeStorage.getItem(itemKey).then(
data => itemValue = data,
error => console.error(error)
);
}
我相信我在这里遗漏了一些东西,这就是为什么它不起作用
答案 0 :(得分:3)
您将data
分配给itemValue
,这只是this.userId
的副本。 JS不支持通过引用传递,这可能使这成为可能。相反,您可以使用itemKey
直接分配给类实例,如下所示:
getItem(itemKey) {
return this.nativeStorage.getItem(itemKey).then(
data => this[itemKey] = data, // assign data to this[itemKey] which will be this.userId (in the example above)
error => console.error(error)
);
}
答案 1 :(得分:0)
JavaScript不支持按引用调用。它只是通过价值arg传递。因此,值只能通过对象引用进行更新。
答案 2 :(得分:0)
在参考部分/注释时,您不能拥有异步构造函数,因此我将所有异步部分提取到工厂中。
我还没有使用离子的经验,所以你应该把以下作为伪代码:
//a utility to fetch multiple items at once
function getItems(...keys){
return Promise.all( keys.map( key => NativeStorage.getItem(key) ) )
.then(values => combine(keys, values));
}
//and a quick test
getItems("userId", "userName", ...).then(console.log);
//or in the context of the last snippet:
getItems("userId", "userName", ...).then(assignTo( new YourClass() ));
或在您要分配多个属性的情况下:
USE FOO
CREATE LOGIN FOO_Admin WITH PASSWORD = 'MY_PASSWORD'
CREATE USER ADMIN FOR LOGIN FOO_Admin
EXEC sp_addrolemember db_owner, ADMIN;
EXEC sp_addrolemember db_datareader, ADMIN
EXEC sp_addrolemember db_datawriter, ADMIN
GO
USE MASTER
GO
GRANT CONNECT SQL TO FOO_Admin
或者,如果这仍然是你的重复:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.3.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.2.3.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>5.2.3.Final</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>6.1.0.jre8</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.3.2.Final</version>
</dependency>
希望这有助于向您展示解决问题的不同方法。