AngularJS、HTML、Javascript、および Ionic を使用して、ユーザーがアプリの特定のページに初めて入るときにメッセージを表示する正しい手段を見つけています。その後、このメッセージは表示されません。
現在、ボタンを使用してメッセージを表示し、ng-show を使用して「初回」フラグを確認しています。このフラグは、ブール値の「true」または「false」としてローカルに保存されます。そのために window.localStorage を使用しています。このアプローチが正しいかどうかを知りたいのですが、正しい場合、コントローラー内に存在する初めてのフラグのコードスニペットは次のようになります。
$scope.getFT = function(){
return window.localStorage['firstTime'] || 0;
};
$scope.setFT = function(value){
window.localStorage['firstTime'] = 1;
};
$scope.checkFT = function(){
// Checks whether or not this is the first time (FT) the user entered this page
if(($scope.getFT() === 0 || $scope.getFT() === 'undefined')
{// This is the first time navigating in this page, show message & set local flag to true
console.log("checkFT: true, value of FT: " + window.localStorage['FT'] + ', now setting FT to true');
$scope.setFT(1);
return true;
}
else
{// Not first time navigating through here, do not show first time message
console.log("checkFT: false, value of FT: " + window.localStorage['FT']);
return false;
}
};
私のページには、次のように、以下のコードを含む次のボタンがあります。
<ion-header-bar>
<!-- some code here -->
<ion-header-bar>
<ion-content>
<!-- First Time Button -->
<button ng-show='checkFT()' class="firstTime">
<img src=".../img/firstTimeImage.png"/>
</button>
</ion-scroll>
<ion-list ng-repeat="i in array">
<!-- . . . . more code below . . . . -->
</ion-list>
</ion-scroll>
</ion-content>
デバッグ ウィンドウで、このページに初めてアクセスしたことをアプリが認識していることがわかりますが、何らかの理由で、ページの読み込みが完了する前に関数が約 9 回呼び出されます。それはいかなる種類のループにもありません。以下の要素のリストのコードロジックがありますが、そのリストはボタンから独立しており、その逆も同様です。
だからこそ、ここで正確に何が間違っているのでしょうか? 私の論理は単に間違っているのでしょうか、私のアプローチは完全に間違っているのでしょうか、それとも私は正しいのでしょうか?