在Ionic-app中,我的一个JavaScript函数出现了问题,这个函数被另一个函数调用。 我总是得到一个错误,没有定义函数getSqlSelect。 但是这些函数都在services.js脚本中定义。
这是来自services.js的简短版本代码:
.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 :(得分:0)
那是因为您在该位置的范围内没有getSqlSelect
变量。 如果<{strong> select
被称为obj.select(...)
,其中obj
是回调工厂返回的对象,那么您可以使用this.getSqlSelect(...)
来引用它。 E.g。
var sql = this.getSqlSelect(table, filterAttributesArr);
// ^^^^^
如果使用正确的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 });
}
};
})
如果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 });
},
getSqlSelect: getSqlSelect
};
})