日別アーカイブ: 2016-01-05

ionic + Cordovaで連続でポップアップを開いたときに挙動がおかしくなるのを防ぐ

ionic + cordovaでionicPopupを使ってポップアップを実装したとき、1つ目のポップアップを閉じてすぐに2つ目のポップアップを開くとフォーカスがおかしくなる。

function a() {
var popup = $ionicPopup.show({
title: 'title',
scope: $scope,
buttons: [
{
text: 'OK',
}
]
});
}
function b() {
var popup = $ionicPopup.show({
title: 'title',
scope: $scope,
buttons: [
{
text: 'OK',
onTap: function(e) {
popup.close();
a();
}
}
}
]
});
}
b();

問題はpopup.close()と次のポップアップのレースコンディションのよう。
次のようにtimeoutを十分にとればほぼうまくいく。

function a() {
var popup = $ionicPopup.show({
title: 'title',
scope: $scope,
buttons: [
{
text: 'OK',
}
]
});
}
function b() {
var popup = $ionicPopup.show({
title: 'title',
scope: $scope,
buttons: [
{
text: 'OK',
onTap: function(e) {
popup.close();
$timeout(function () {
a();
}, 250);
}
}
}
]
});
}
b();