๐ databinding์ ์ค์ตํ๊ธฐ์ ์์ datbinding์ ๊ฐ๋ ์ ์๊ธฐํ๊ณ binding modes์ binding types์ ๋ํด ๋จผ์ ์์๋ณด์.
Data Binding: ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ปจํธ๋กค์ ๋ฐ์ดํฐ ์์ค์ ๋๊ธฐํ๋ ์ํ๋ก ์ ์งํ๋ ๋ฐ ์ฌ์ฉ๋๋ค!!!
์์์ ์ด์ผ๊ธฐํ๋ฏ์ด ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ํํ๊ธฐ์ํด์๋ model๊ณผ binding instance๊ฐ ํ์ํ๋ค. model instance๋ ์ ํ๋ฆฌ์ผ์ด์
๋ฐ์ดํฐ์ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ค์ ํ๊ฑฐ๋ ๊ฐ์ ธ์ค๊ธฐ์ํ ๋ค์ํ ๋ฉ์๋๊ฐ ์๋ค. ๋ํ ๋ฐ์ธ๋ฉ์ ์์ฑํ๋ ๋ฉ์๋๊ฐ ํฌํจ๋์ด ์๋ค. ์ด ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด binding information์ ์ ํ๋ฆฌ์ผ์ด์
๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ด ๋ฐ์ํ ๋๋ง๋ค ํธ๋ฆฌ๊ฑฐ๋๋ ์ด๋ฒคํธ ๋ฑ์ ๊ฐ์ด ์์ฑํ๋ค.
binding mode๋ data source๊ฐ UI์ ๋ฐ์ธ๋ฉ๋๋ ๋ฐฉ์์ ์ ์ํ๋ค.
SAPUI5์์๋ ์ธ ๊ฐ์ง binding modes๊ฐ ์๋ค.
๐ก SAPUI5๋ Javascript ํ๋ ์์ํฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋กํ๋ฉฐ MVC์์ Model, View ๋ฐ Controller๋ฅผ ๋ํ๋ด๋ MVC ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํ๋ค.
SAPUI5์์๋ ๋ค์์ binding types๊ฐ ์๋ค.
const personalInfoJson = [{
"Name": "jonghwahong",
"Tel": "010-xxxx-xxxx",
"Email": "zzzonghwa@gmail.com",
"address": {
"street": "sangdo",
"city": "Seoul",
"country": "KR"
}
},{
"Name": "gildonhong",
"Tel": "010-xxxx-xxxx",
"Email": "gildong@test.com",
"address": {
"street": "jinsam",
"city": "Sacheon",
"country": "KR"
}
}];
const oModel = new sap.ui.model.json.JSONModel();
oModel.setData(personalInfoJson);
this.getView().setModel(oModel);
this.byId("testTable").setModel(oModel, "Items");
<Text text="{/0/Name}"/>
<l:VerticalLayout id="vLayout" binding="{/0/address}" width="100%">
<Text text="{street}"/>
<Text text="{city}"/>
<Text text="{country}"/>
</l:VerticalLayout>
<List id="testTable" headerText="human Details" items="{Items>/}">
<ObjectListItem title="{Items>Name}"/>
</List>
<Text text="{= ${/0/Name} === 'johnhwahong' ? 'true jonghwa' : 'false jonghwa'}"/>
์์์ ์ ํ ๊ธ๋ง ๋ด์๋ One-way์ One-time์ ์ฐจ์ด์ ์ ์๊ธฐ ์ด๋ ต๋ค. One-way์ Onew-time์ ๋ค์ ๋งํฌ์ ์์ธํ ์ ๋ฆฌ ๋์ด ์๋ค. ๊ผญ ์ฝ์ด๋ณด๊ธธ ๋ฐ๋๋ค!
formatter function
์ ์ฌ์ฉํ ๋ ๋ฐ์ธ๋ฉ์ ์๋์ผ๋ก "One-way"๋ก ์ ํ๋๋ค. ๋ฐ๋ผ์ "Two-way" ์๋๋ฆฌ์ค์์๋ formatter function
์ ์ฌ์ฉํ ์ ์์ง๋ง Data Types๋ ์ฌ์ฉํ ์ ์๋ค.