2015-12-30 70 views
3

请参阅下面的代码。我叫setQuestion()内的db.transaction sucessCallBack但收到此错误Uncaught TypeError: this.setQuestions is not a function。我的代码中有任何错误。请帮帮我。帮助将不胜感激。谢谢成功回调不调用的WebSQL交易的另一个功能

game.module(
"game.scenes.scene" 
) 
.require(
    "game.assets", 
    "game.entities.gameObject", 
    "game.entities.backgroundObject", 
    "game.entities.animeObject", 
    "game.entities.starObject", 
    "game.entities.buttonObject" 
).body(function() { 
    game.SceneScene1 = game.Scene.extend({ 
    loaded: function() { 
     this.get_difficulty_level(); 
    }, 
    setQuestions: function() { 
     //some code 
    }, 
    get_difficulty_level: function(){ 
     var app_id = this.app_id; 
     var user_id = this.user_id; 
     db.transaction(function (transaction) 
     { 
      transaction.executeSql('SELECT * FROM User_report where app_id="'+app_id+'" and user_id="'+user_id+'" order by id desc limit 1;', [], 
      function (transaction, result) 
      { 
       if (result.rows.length == 0) 
       { 
        difficulty_level=2; 
       }else{ 
        difficulty_level = result.rows.item(0).difficulty; 
        console.log(result.rows.item(0)); 
       } 
      }); 
      },this.errorHandler,this.successDiffi); 
     }, 
     successDiffi: function(){ 
      this.setQuestions(); 
     }, 
}); 
}); 
+0

您是否在发布时遗失了一些代码? '''.body(function(){'打开一个匿名函数,但是下面的代码定义了一个对象的属性。 – puqeko

+0

是的,我错过了,编辑我的问题 – Vinie

回答

0

发生这种情况是因为成功回调在其他范围内调用,而不是您所假定的。要解决这个问题,您可以尝试在回调中使用关闭:

game.module(
"game.scenes.scene" 
) 
.require(
    "game.assets", 
    "game.entities.gameObject", 
    "game.entities.backgroundObject", 
    "game.entities.animeObject", 
    "game.entities.starObject", 
    "game.entities.buttonObject" 
).body(function() { 
    game.SceneScene1 = game.Scene.extend(
    new function() 
    { 
    this.loaded = function() { 
     this.get_difficulty_level(); 
    }; 
    this.setQuestions= function() { 
     //some code 
    }; 
    this.get_difficulty_level= function(){ 
     var app_id = this.app_id; 
     var user_id = this.user_id; 
     db.transaction(function (transaction) 
     { 
      transaction.executeSql('SELECT * FROM User_report where app_id="'+app_id+'" and user_id="'+user_id+'" order by id desc limit 1;', [], 
      function (transaction, result) 
      { 
       if (result.rows.length == 0) 
       { 
        difficulty_level=2; 
       }else{ 
        difficulty_level = result.rows.item(0).difficulty; 
        console.log(result.rows.item(0)); 
       } 
      }); 
      },this.errorHandler,this.successDiffi); 
     }; 
     var _this = this; 
     this.successDiffi= function(){ 
      _this.setQuestions(); 
     }; 
}); 
}); 
+0

谢谢你的想法。我刚刚使用了'var _this = this; this.successDiffi =函数(){ _this.setQuestions(); };'接近。 – Vinie