Techvenience

Technology × Convenience - Vue / React / Next / Nuxt / ChatGPTなどのIT技術がもたらす便利さをお伝えします。最近はChatGPTなどのAI技術を使ってブログを書いています。

【OnsenUI・Angular】ons-dialogの中で、Angularの「this.hogehoge」が認識されなかった【Monaca・ハイブリッドアプリ開発】

【OnsenUI・Angular】ons-dialogの中で、Angularの「this.hogehoge」が認識されなかった【Monaca・ハイブリッドアプリ開発

f:id:duo-taro100:20160218004611p:plain
タイトル通り。
ons-dialogの中で、this.hogehogeのようにthis.変数名とやっても認識されない(undefinedとなる)
ハマったので備考的に。

【解決策】
一旦、ons-dialogに入る前に、
var hogehoge = this.hogehoge;
のように、var 変数で受け皿を用意。
その値を使うようにする。

具体的には以下の通り
■うまく動かない
this.dataFlagがundefinedとなったので、処理1、処理2どちらの処理も走らない。

ons.notification.confirm({
title: '削除',
messageHTML: '保存情報を全て削除します。よろしいですか。',
buttonLabels: ['キャンセル', '削除'],
animation: 'default',
cancelable: true,
callback: function(index) {
if(index == -1) {
return;
} else if(index == 0) {
return;
} else if(index == 1) {

if(this.dataFlag == "account"){
処理1
} else if (this.dataFlag == "purpose"){
処理2
}
}
});


■うまく動く
this.dataFlagを他の変数に代入して使用する。


>>

var flag = this.dataFlag;
ons.notification.confirm({
title: 'タイトル',
messageHTML: 'メッセージ',
buttonLabels: ['NO', 'YES'],
animation: 'default',
cancelable: true,
callback: function(index) {
if(index == -1) {
return;
} else if(index == 0) {
return;
} else if(index == 1) {

if(flag == "account"){
処理1
} else if (flag == "purpose"){
処理2
}
}
});