无法读取属性' lockDatabase'未定义的(这个)

时间:2017-05-19 09:45:18

标签: javascript angular typescript

我收到此错误是因为'这个'我想是超出了范围,但我无法找到解决问题的方法。我尝试使用胖箭头,然后该功能运行。但是有一个问题是我没有必须使用的回调值?这是我的代码:

this.checkIfDatabaseIsLocked(function(res) {
          //If true database is locked
          console.log("result checkIfDatabaseIsLocked: " + res);
          if (res) {
            return;
          }
          //LockDatabase
          this.lockDatabase().then(
            result => {

有什么想法吗?提前致谢!!!

2 个答案:

答案 0 :(得分:1)

在此处使用箭头功能可确保this保持您期望的值:

this.checkIfDatabaseIsLocked(res => {
      //If true database is locked
      console.log("result checkIfDatabaseIsLocked: " + res);
      if (res) {
        return;
      }
      //LockDatabase
      this.lockDatabase().then(
        result => {
... and so on

答案 1 :(得分:0)

您可以使用arrow functions或使用正确的上下文绑定您的函数,以在您的函数中获得正确的this

this.checkIfDatabaseIsLocked((res) => {
    // `this` will be bound correctly here
})

<击> 或使用Function.bind

this.checkIfDatabaseIsLocked((function (res) {
    // `this` will be bound correctly here
}).bind(this))

<击>

不要将Function.bind与TypeScript一起使用。您将失去类型检查。见https://github.com/Microsoft/TypeScript/issues/212