2016-11-25 5 views
0

Ionic-appでは、別のJavaScript関数から呼び出されるJavaScript関数に問題があります。 私はいつもgetSqlSelect関数が定義されていないというエラーを受け取ります。 しかし、これらの関数はすべてservices.jsスクリプトで定義されています。JavaScriptは、他の人が呼び出すプログラムされた関数が定義されていないと言っています

.factory('LocalDatabase', function() { 
    var arrResult = ""; 

    return { 
     select: function (table, filterAttributesArr, success) { 
      var sql = getSqlSelect(table, filterAttributesArr); 
      var db = window.sqlitePlugin.openDatabase({ name: 'p16.sqlite', location: 0 }); 
     }, 
     getSqlSelect: function (tablename, filterAttributesArr) { 
      return ""; 
     } 

    }; 
}) 

答えて

0

あなたがその場所にスコープでgetSqlSelect変数を持っていないためです。

ここservices.jsからのコードのショートバージョンがあります。 selectobj.select(...)と呼び出されている場合、objがコールバックによって返されたそのオブジェクトである場合、その内で0​​を参照することができます。例えば。

var sql = this.getSqlSelect(table, filterAttributesArr); 
//  ^^^^^ 

selectは動作しません右this、と呼ばれるされていない場合。あなたが行うことができ、getSqlSelectを公開する必要が

.factory('LocalDatabase', function() { 
    var arrResult = ""; 

    function getSqlSelect(tablename, filterAttributesArr) { 
     return ""; 
    } 

    return { 
     select: function (table, filterAttributesArr, success) { 
      var sql = getSqlSelect(table, filterAttributesArr); 
      var db = window.sqlitePlugin.openDatabase({ name: 'p16.sqlite', location: 0 }); 
     } 
    }; 
}) 

select場合は、右thisで呼び出されていない、あなたはを行う:あなたはそれを公開する必要がない場合は、ちょうどあなたのコールバック内で定義それも:

.factory('LocalDatabase', function() { 
    var arrResult = ""; 

    function getSqlSelect(tablename, filterAttributesArr) { 
     return ""; 
    } 

    return { 
     select: function (table, filterAttributesArr, success) { 
      var sql = getSqlSelect(table, filterAttributesArr); 
      var db = window.sqlitePlugin.openDatabase({ name: 'p16.sqlite', location: 0 }); 
     }, 
     getSqlSelect: getSqlSelect 
    }; 
}) 
+1

ありがとうございましたTJ!それは解決策でした:) –

関連する問題