##はじめに
前回の記事で、Shellcontrolについてご紹介しましたが、ふと「そもそもコントロールって何? コントローラとどう違うの?」という疑問がわいたので、コントロールについて調べてみました。
##コントロールとは
公式ドキュメントによれば、画面のパーツの見た目や動作を定義するために使われるものだそうです。
たとえば、画面にボタンを表示するために以下のようなソースを書きました。ここで使われているButtonはControlの一種です。一方コントローラはビューを操作するためのロジックのことでしたね。
<mvc:View
controllerName="test.helloworld.controller.App"
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc">
<Button
text="Say Hello"
press="onShowHello"/>
</mvc:View>
##APIリファレンスを見てみると
sap.m.ButtonのAPIリファレンスを見てみます。
Extends:のところに"sap.ui.core.Control"とあり、"sap.ui.core.Control"という抽象クラスを継承したものであることがわかります。このように、すべてのコントロールはsap.ui.core.Controlクラスを継承して作られています。
また、その下にはProperties, Associations, Events, Methodsとあります。これらはコントローラのメタデータと呼ばれます。Buttonにはありませんが、Aggregationを定義しているコントロールもあります。
メタデータの属性 | 意味 | 例 |
---|---|---|
Properties | 外部からアクセス可能なプロパティ | text, type |
Associations | コントロールと他の要素とカーディナリティ | Buttonに対して0~nのラベルを定義できる |
Aggregation | コントロールとその子要素のカーディナリティ | Toolbarの中に0~nの子要素を配置できる |
Events | コントロールに対して定義されたイベント | press:ボタンが押されたときのイベント |
Methods | コントロールに対して定義された外部からアクセス可能なメソッド | getText:textの値を取得 |
##まとめ
- コントローラは画面のパーツの見た目や動作を定義するために使われるもの
- "sap.ui.core.Control"クラスを継承して作られている
- プロパティを設定することで見た目を変えたり、イベントやメソッドを利用して動作を定義することができる
##参考にしたページ
[SAPUI5/OpenUI5]カスタムUIコントロールを作成する方法(前編)