5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Google App Maker ー PageFragmentインスタンスのハマりやすいところ

5
Posted at

PageFragment の使い方には2種類あって 複数Page にまたがる同じ部品としての使い方(ヘッダーやメニューなど) と Pageの部品として何度も使う部品としての使い方(フォームの部品など) がある。

前者の使い方はどの画面からでも app.pageFramgnets.{PageFragment名} のように Page と同じようなアクセス方法をするので簡単である。
公式で提供されている Starter App テンプレート を見ると良いだろう。

ややこしいのが後者の方で、app.page.{Page名}.descendants.{PageFragmentのname} のようにアクセスする。
これが PageFragmentインスタンス と言われるもので、同じページにいくつあってもいいし、違うページにもいくつあっても良い。
画面をまたがって増えていくような部品を作る際に、非常に重要になっていくものである。
本記事ではPageFragmentインスタンスのハマりやすいところを解説する。
image.png

そもそも App Maker ってなに?という人は、以下の記事を参照してください。
Google App Maker とは? 短期間で Web アプリケーション構築を可能にした理由

PageFragmentインスタンス から 親Page へのバインドは可能

次のように親Pageの値を変えると、自動的に子画面(PageFragmentインスタンス)の値も変わる。
image.png

親Page から PageFragmentインスタンス へのバインドは不可

バインドされずにエラーがコンソールに表示される。
image.png

 ただしスクリプトからなら値を取得することは可能

先程のバインドできなかったらラベルの onClick イベントに次のようなコードを書く。
image.png

ラベルをクリックすると値が取得されて設定される。
つまりバインドができないだけで値の取得は可能。
これを利用することで 親Page から PageFragmentインスタンス のウィジェットや CustomProperty の値を取得することが可能になる。
image.png

PageFragmentインスタンス 内のイベント

PageFragmentインスタンス で発生するイベントを書くときに注意しなければいけないのが、PageFragmentインスタンス へアクセスする際に parent を最後につけないといけないということ。
つけないとインスタンスではなく PageFragment の本体を参照してしまう。
次の Stack Overflow の記事がわかりやすいので見ると良いだろう。

appmaker - How to access page fragment custom properties programmatically? - Stack Overflow

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?