UPDATE(6月15日、'16)
私は以下の私のオリジナルの答えでリンクを共有しました。より多くの議論がスレッドで行われ、以前の回答アプローチは、仕事はベストプラクティスではないかもしれませんが。ここに更新します。
service.js
// using beta 7 ionic 2
import {Injectable} from '@angular/core';
import { Storage, SqlStorage } from 'ionic-angular';
@Injectable()
export class CategoryService {
static get parameters(){
return []
}
constructor() {
this.storage = new Storage(SqlStorage);
this.storage.query('CREATE TABLE IF NOT EXISTS category (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, type TEXT)');
}
getCategory() {
return this.storage.query('SELECT id, name, type FROM category');
}
}
を次に上記のサービスは、次のように使用されている:だけ更新を考え
somewhereInCategoryPage.js
ファイル
loadCategory() {
this.platform.ready().then(() => {
this.service.getCategory()
.then(data => {
this.category = [];
if (data.res.rows.length > 0) {
for (var i = 0; i < data.res.rows.length; i++) {
let item = data.res.rows.item(i);
this.category.push({
'id': item.id,
'name': item.name,
'type': item.type
});
}
}
console.log(this.category);
}, error => {
console.log('Error', error.err)
})
});
}
、-知っている人のために役に立つかもしれません。私は最終的に決着何参照
のためにここに残し
旧回答。ここに投稿すると、誰かを助けるかもしれません。コンストラクタでthis thread on ionic forum
サービス/プロバイダで
getCategory() {
var storage = new Storage(SqlStorage);
return new Promise(function(resolve, reject) {
return storage.query('SELECT name, type, note FROM category')
.then((data) => {
// kinda lazy workaround
resolve(data.res.rows);
});
});
}
からのガイダンス:テンプレートで
static get parameters() {
return [ [Myservice] ];
}
constructor(myservice) {
myservice.getCategory()
.then((category) => {
// recreate new array from old category array, or else:
// EXCEPTION: Cannot find a differ supporting object
// https://github.com/angular/angular/issues/6392#issuecomment-171428006
this.categories = Array.from(category);
console.log(this.categories);
})
.catch((error) => {
console.log(error);
});
}
:
<ion-list>
<button ion-item *ngFor="#category of categories">
{{ category.name }}
<br>
<ion-icon name="arrow-forward" item-right></ion-icon>
</button>
</ion-list>
これは良く見える、まだレコードについて、私はで考えますあなたの元の例では、この小さな変更が有効になります:service.getCategory()。then((category)=> {this.category = category}) –
@ManuValdés私の元の例からのエラーは、getCategory()が約束ではないと不平を言った。約束は 'それ'を持っていますが、私の元の例では、それは – Rexford
ではありませんでした。そうです、それはthis.storage.query(...)の前にreturn文がありません。 ;それはあなたがthen()(これは約束です)を返す方法です。次に、ページコンストラクタにチェーンすることができます。 –