无法获取变量中的值
Unable to fetch value in a variable
在 home.ts
中,我在函数中获取一个值。我需要该函数外的变量中的值。
下面是 home.ts
代码:无法在 this.assignDate
中获取 estimatedServerTimeMs
的值。它给出了错误。
assignDate;
ngOnInit() {
let epoch = firebase.database.ServerValue.TIMESTAMP;
var offsetRef = firebase.database().ref(".info/serverTimeOffset");
offsetRef.on("value", function(snap) {
var offset = snap.val();
var estimatedServerTimeMs = new Date().getTime() + offset;
console.log(estimatedServerTimeMs); // enoch numeric string
this.assignDate = estimatedServerTimeMs; // This is giving error
});
}
这是错误:
annot set property 'assignDate' of null
at crud2.page.ts:60
at index.cjs.js:4551
at exceptionGuard (index.cjs.js:700)
at EventList.push../node_modules/@firebase/database/dist/index.cjs.js.EventList.raise (index.cjs.js:9624)
at EventQueue.push../node_modules/@firebase/database/dist/index.cjs.js.EventQueue.raiseQueuedEventsMatchingPredicate_ (index.cjs.js:9578)
at EventQueue.push../node_modules/@firebase/database/dist/index.cjs.js.EventQueue.raiseEventsForChangedPath (index.cjs.js:9562)
at Repo.push../node_modules/@firebase/database/dist/index.cjs.js.Repo.updateInfo_ (index.cjs.js:12698)
at index.cjs.js:12690
at each (index.cjs.js:556)
at Repo.push../node_modules/@firebase/database/dist/index.cjs.js.Repo.onServerInfoUpdate_ (index.cjs.js:12689)
问题是我无法从这个函数中取出值offsetRef.on("value", function(snap) {
this
在 function(snap)
中的范围表示函数。将其替换为箭头函数以使用成员变量。
offsetRef.on("value", (snap) => {
const offset = snap.val();
const estimatedServerTimeMs = new Date().getTime() + offset;
console.log(estimatedServerTimeMs); // enoch numeric string
this.assignDate = estimatedServerTimeMs; // This is giving error
});
在 Typescript 中声明变量时使用 let
或 const
而不是使用 var
.
也是一个好习惯
在 home.ts
中,我在函数中获取一个值。我需要该函数外的变量中的值。
下面是 home.ts
代码:无法在 this.assignDate
中获取 estimatedServerTimeMs
的值。它给出了错误。
assignDate;
ngOnInit() {
let epoch = firebase.database.ServerValue.TIMESTAMP;
var offsetRef = firebase.database().ref(".info/serverTimeOffset");
offsetRef.on("value", function(snap) {
var offset = snap.val();
var estimatedServerTimeMs = new Date().getTime() + offset;
console.log(estimatedServerTimeMs); // enoch numeric string
this.assignDate = estimatedServerTimeMs; // This is giving error
});
}
这是错误:
annot set property 'assignDate' of null
at crud2.page.ts:60
at index.cjs.js:4551
at exceptionGuard (index.cjs.js:700)
at EventList.push../node_modules/@firebase/database/dist/index.cjs.js.EventList.raise (index.cjs.js:9624)
at EventQueue.push../node_modules/@firebase/database/dist/index.cjs.js.EventQueue.raiseQueuedEventsMatchingPredicate_ (index.cjs.js:9578)
at EventQueue.push../node_modules/@firebase/database/dist/index.cjs.js.EventQueue.raiseEventsForChangedPath (index.cjs.js:9562)
at Repo.push../node_modules/@firebase/database/dist/index.cjs.js.Repo.updateInfo_ (index.cjs.js:12698)
at index.cjs.js:12690
at each (index.cjs.js:556)
at Repo.push../node_modules/@firebase/database/dist/index.cjs.js.Repo.onServerInfoUpdate_ (index.cjs.js:12689)
问题是我无法从这个函数中取出值offsetRef.on("value", function(snap) {
this
在 function(snap)
中的范围表示函数。将其替换为箭头函数以使用成员变量。
offsetRef.on("value", (snap) => {
const offset = snap.val();
const estimatedServerTimeMs = new Date().getTime() + offset;
console.log(estimatedServerTimeMs); // enoch numeric string
this.assignDate = estimatedServerTimeMs; // This is giving error
});
在 Typescript 中声明变量时使用 let
或 const
而不是使用 var
.