Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TypeScript中的项目范围(JavaScript)_Javascript_Typescript_Angular_Ionic2 - Fatal编程技术网

TypeScript中的项目范围(JavaScript)

TypeScript中的项目范围(JavaScript),javascript,typescript,angular,ionic2,Javascript,Typescript,Angular,Ionic2,我想在ionic2中使用sqlite数据库 我可以在下面的代码中连接到数据库并成功地检索数据项。 但我不可能进入这个.items数组 错误是: undefined不是对象(正在评估“this.items”) 有人知道问题出在哪里吗? 我想这是可变范围,但我不确定 import {Page, Platform} from 'ionic-angular'; declare var sqlitePlugin:any; declare var plugins:any; @Page({ templa

我想在ionic2中使用sqlite数据库

我可以在下面的代码中连接到数据库并成功地检索数据项。 但我不可能进入这个.items数组

错误是:

undefined不是对象(正在评估“this.items”)

有人知道问题出在哪里吗? 我想这是可变范围,但我不确定

import {Page, Platform} from 'ionic-angular';
declare var sqlitePlugin:any;
declare var plugins:any;

@Page({
  templateUrl: 'build/pages/getting-started/getting-started.html'
})
export class GettingStartedPage {
  items: Array<{title: string}>;
  constructor(platform: Platform) {
    platform.ready().then(()=>{
      this.getData();
    });
  }

  getData(){
    sqlitePlugin.openDatabase({name: 'encrypted.db', key: 'Password', location: 'default'}, function(db) {
      db.transaction(function(tx) {
          var query: string = "SELECT * FROM items";
          this.items = []; <-- error happens at this row.
          tx.executeSql(query, [], function(tx, resultSet) {
            //alert("name: " + resultSet.rows.item(0).name);
            this.items.push({
              title: resultSet.rows.item(0).name
            });            
          }, function(error) {
            alert('SELECT error: ' + error.message);
            console.log('SELECT error: ' + error.message);
          });
        }, function(error) {
          alert('transaction error: ' + error.message);
          console.log('transaction error: ' + error.message);
        }, function() {
          console.log('transaction ok');
        });
      }, function(error){
        alert('error' + error.message);
    });
  }  
}
从“离子角度”导入{Page,Platform};
声明var-sqlitePlugin:any;
声明var插件:any;
@页面({
templateUrl:'build/pages/getting started/getting started.html'
})
导出类GettingStartedPage{
项目:阵列;
建造商(平台:平台){
platform.ready()。然后(()=>{
这是getData();
});
}
getData(){
openDatabase({name:'encrypted.db',key:'Password',location:'default'},函数(db){
数据库事务(功能(tx){
var query:string=“选择*来自项目”;
this.items=[];使用
()=>
而不是
函数()

这样就可以一直指向类,而不是当前函数

import {Page, Platform} from 'ionic-angular';
declare var sqlitePlugin:any;
declare var plugins:any;

@Page({
  templateUrl: 'build/pages/getting-started/getting-started.html'
})
export class GettingStartedPage {
  items: Array<{title: string}>;
  constructor(platform: Platform) {
    platform.ready().then(()=>{
      this.getData();
    });
  }

  getData(){
    sqlitePlugin.openDatabase({name: 'encrypted.db', key: 'Password', location: 'default'}, (db) => {
      db.transaction((tx) => {
          var query: string = "SELECT * FROM items";
          this.items = []; <-- error happens at this row.
          tx.executeSql(query, [], (tx, resultSet) => {
            //alert("name: " + resultSet.rows.item(0).name);
            this.items.push({
              title: resultSet.rows.item(0).name
            });            
          }, (error) => {
            alert('SELECT error: ' + error.message);
            console.log('SELECT error: ' + error.message);
          });
        }, (error) => {
          alert('transaction error: ' + error.message);
          console.log('transaction error: ' + error.message);
        }, () => {
          console.log('transaction ok');
        });
      }, (error) =>{
        alert('error' + error.message);
    });
  }  
}
从“离子角度”导入{Page,Platform};
声明var-sqlitePlugin:any;
声明var插件:any;
@页面({
templateUrl:'build/pages/getting started/getting started.html'
})
导出类GettingStartedPage{
项目:阵列;
建造商(平台:平台){
platform.ready()。然后(()=>{
这是getData();
});
}
getData(){
sqlitePlugin.openDatabase({name:'encrypted.db',key:'Password',location:'default'},(db)=>{
数据库事务((tx)=>{
var query:string=“选择*来自项目”;
此参数为.items=[]{
//警报(“名称:”+resultSet.rows.item(0.name));
这个。项目。推({
标题:resultSet.rows.item(0).name
});            
},(错误)=>{
警报(“选择错误:”+错误消息);
console.log('SELECT error:'+error.message);
});
},(错误)=>{
警报(“事务错误:”+错误消息);
console.log('transaction error:'+error.message);
}, () => {
console.log('transaction ok');
});
},(错误)=>{
警报(“错误”+错误消息);
});
}  
}
使用
()=>
而不是
函数()

这样就可以一直指向类,而不是当前函数

import {Page, Platform} from 'ionic-angular';
declare var sqlitePlugin:any;
declare var plugins:any;

@Page({
  templateUrl: 'build/pages/getting-started/getting-started.html'
})
export class GettingStartedPage {
  items: Array<{title: string}>;
  constructor(platform: Platform) {
    platform.ready().then(()=>{
      this.getData();
    });
  }

  getData(){
    sqlitePlugin.openDatabase({name: 'encrypted.db', key: 'Password', location: 'default'}, (db) => {
      db.transaction((tx) => {
          var query: string = "SELECT * FROM items";
          this.items = []; <-- error happens at this row.
          tx.executeSql(query, [], (tx, resultSet) => {
            //alert("name: " + resultSet.rows.item(0).name);
            this.items.push({
              title: resultSet.rows.item(0).name
            });            
          }, (error) => {
            alert('SELECT error: ' + error.message);
            console.log('SELECT error: ' + error.message);
          });
        }, (error) => {
          alert('transaction error: ' + error.message);
          console.log('transaction error: ' + error.message);
        }, () => {
          console.log('transaction ok');
        });
      }, (error) =>{
        alert('error' + error.message);
    });
  }  
}
从“离子角度”导入{Page,Platform};
声明var-sqlitePlugin:any;
声明var插件:any;
@页面({
templateUrl:'build/pages/getting started/getting started.html'
})
导出类GettingStartedPage{
项目:阵列;
建造商(平台:平台){
platform.ready()。然后(()=>{
这是getData();
});
}
getData(){
sqlitePlugin.openDatabase({name:'encrypted.db',key:'Password',location:'default'},(db)=>{
数据库事务((tx)=>{
var query:string=“选择*来自项目”;
此参数为.items=[]{
//警报(“名称:”+resultSet.rows.item(0.name));
这个。项目。推({
标题:resultSet.rows.item(0).name
});            
},(错误)=>{
警报(“选择错误:”+错误消息);
console.log('SELECT error:'+error.message);
});
},(错误)=>{
警报(“事务错误:”+错误消息);
console.log('transaction error:'+error.message);
}, () => {
console.log('transaction ok');
});
},(错误)=>{
警报(“错误”+错误消息);
});
}  
}