空のはずのフォームに前回読み込んだ情報が残ってしまう
Adaloで作っているノーコードアプリで、データベースの詳細を編集する画面があるのですが、コレクションのレコードが空(Empty)であるはずなのに、以前に読み込んだマジックテキストがそのまま残ってしまいます。これはどうやらキャッシュの仕様のようで、情報のあるフォームはデータベースの通りキャッシュが上書きされ、登録されている通りの情報が表示されますが、空白欄のキャッシュはそのまま残ってしまいます。
画面遷移時にフォームを空にしてみる
画面繊維時に『Change Input Value』を使用して、フォームを一つ一つ空(Empty)にしてから遷移するようにしましたが、これはダメでした。フォームを空にしてから画面遷移しても、次にフォームを開いたときにはキャッシュが残っていて、空であるはずのフォームに以前の情報が表示されてしまいました。
解決策はダミーレコードの作成&削除をはさむ
空のダミーデータを書き込みし、キャッシュを空(Empty)で上書きすることで解決できました。
例えば、画面繊維する際に『Link』のアクションを使いますが、この前に以下のアクションを追加します。
- 『Create』でダミーレコードの作成
- 『Delete』でダミーレコードの削除
- 『Change Input Value』で各フォームの値を空に変更
または、
- 『Create』でダミーレコードの作成
- 『Change Input Value』で各フォームの値を空に変更
- 『Delete』でダミーレコードの削除
および、
- 『Change Input Value』で各フォームの値を空に変更
- 『Create』でダミーレコードの作成
- 『Delete』でダミーレコードの削除
これをアクションの間に挟みます。最後に『Link』で画面遷移するようにします。フォームの値で作成(Create)または変更(Update)するアクションがある場合は、一番最初にフォームの情報を保存してからダミーデータの作成・削除を行います。
ダミーデータはすべて空(Empty)のレコードです。
お掃除して出る感じです。
また、空のダミーデータを書き込むのなら、『Change Input Value』で各フォームの値を空に変更しなくてもいいのでは?と思いますが、これがないとうまくいきませんでした。
ダミーデータはマジックテキストで読み込むコレクションと同じデータベースに書き込み・削除します。この動作が間に入るため、画面遷移に少し時間がかかりレスポンスが悪くなります。
フォーム表示前か?画面を閉じる後か?
この動作を仕込む場合、以下のどちらかになるかと思います。
- フォームを開く前にダミーデータを作成・削除する
- フォームを閉じる前にダミーデータを作成・削除する
成功したのは後者の方でした。今から開くときに行うとキャッシュが残っていました。元の画面に戻る時(フォームを閉じるとき)に行うとうまくいきました。フォームが表示されないページで行うよりも、フォームが表示されているページで行うのがいいみたいです。