Data Binding Tutorial - 09 Formatting Values

ํ™์ข…ํ™”ยท2021๋…„ 10์›” 26์ผ
0

databinding

๋ชฉ๋ก ๋ณด๊ธฐ
9/16

๐Ÿ“Œ ๊ฐœ์š”

์‚ฌ์šฉ์ž์—๊ฒŒ 'ํ™๊ธธ๋™'์ด๋ผ๋Š” ์‚ฌ๋žŒ์˜ ์—ฐ๋ฝํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๊ณ ์ž ํ•œ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ™๊ธธ๋™์—๊ฒŒ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด๋Š” ๋งํฌ๋ฅผ
์ถ”๊ฐ€ํ•  ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ์œ„ํ•ด Model์˜ ๋ฐ์ดํ„ฐ๋ฅผ sap.m๊ณผ ์ผ์น˜ํ•˜๋„๋ก ๋ณ€ํ™˜ํ•œ๋‹ค. URLHelper.Email API๋ฅผ ์ •๊ทœํ™”ํ•œ๋‹ค,
์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๋Š” ์ฆ‰์‹œ ์ „์ž ๋ฉ”์ผ๋„ ๋ณ€๊ฒฝ๋œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ custom formatter function์ด ํ•„์š”ํ•˜๋‹ค.

๐Ÿ“Œ ์˜ˆ์‹œ

  • MainController.js
sap.ui.defind([
	'sap/ui/core/mvc/Controller',
	'sap/m/library'
]), function (Controller, mobileLibrary) {
	'use strict';
	
	return Controller.extend('...', {
		formatMail: function(sFirstName, sLastName) {
			const oBundle = this.getView().getModel('i18n').getResourceBundle();
			return mobileLibrary.URLHelper.normalizeEmail(
				sFirstName + '.' + sLastName + '@example.com',
				oBundle.getText('mailSubject', [sFirstName]),
				oBundle.getText('mailBody'));
		}
		
	})	
}

custom formatter์—์„œ๋Š” ํ˜„์žฌ Model์— ์žˆ๋Š” ์„ฑ๊ณผ ์ด๋ฆ„์„ ํ•จ์ˆ˜์˜ parameter๋กœ ์ •์˜ํ•œ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅ ํ•„๋“œ์— ๋‹ค๋ฅธ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์—ฌ
๋ชจ๋ธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด Formatter๊ฐ€ ํ”„๋ ˆ์ž„์›Œํฌ์— ์˜ํ•ด ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด UI๊ฐ€ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๊ณผ ๋™๊ธฐํ™”๋œ๋‹ค.

  • MainView.view.xml
				<Link href="{
						parts: [
							'/firstName',
							'/lastName'
						],
						formatter: '.formatMail'
					}"
					text="{i18n>sendEmail}"/>

complex bindings์˜ ๊ฒฝ์šฐ {}์™€ ํ•จ๊ป˜ simple binding syntax๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
Link element์˜ href ํ”„๋กœํผํ‹ฐ๋Š” ๋ฌธ์ž์—ด ๊ฐ’ ์•ˆ์— ์ „์ฒด ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•œ๋‹ค. ์ด ๊ฒฝ์šฐ ๊ฐ์ฒด์—๋Š” ๋‘ ๊ฐ€์ง€ ํ”„๋กœํผํ‹ฐ๊ฐ€ ์žˆ๋‹ค.
1. parts
parts๋Š” ๊ฐ ์š”์†Œ๊ฐ€ ๊ฒฝ๋กœ ์†์„ฑ์„ ํฌํ•จํ•˜๋Š” ๊ฐ์ฒด์ธ Javascript ๋ฐฐ์—ด์ด๋‹ค. ์ด ๋ฐฐ์—ด์˜ ์š”์†Œ ์ˆ˜์™€ ์ˆœ์„œ๋Š” formatMail function์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ˆœ์„œ์™€ ๊ฐ™๋‹ค.
2. formatter
parts ๋ฐฐ์—ด์— ๋‚˜์—ด๋œ parameters๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” function์— ๋Œ€ํ•œ reference์ด๋‹ค. formatter ํ•จ์ˆ˜์— ์˜ํ•ด ๋ฐ˜ํ™˜๋˜๋Š” ๋ชจ๋“  ๊ฐ’์€ ์ด ์†์„ฑ์˜ ์„ค์ •๋œ ๊ฐ’์ด๋‹ค.
๐Ÿ’ก ํฌ๋งทํ„ฐ ์‹œ์ž‘ ๋ถ€๋ถ„์˜ ์ (formatMail)์€ ํ˜„์žฌ View์˜ Controller Instance์—์„œ fromatMail ํ•จ์ˆ˜๋ฅผ ์ฐพ๋„๋ก SAPUI5์— ์— ์ง€์‹œํ•œ๋‹ค.
์ ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ „์—ญ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ํ•จ์ˆ˜๋ฅผ ํ™•์ธํ•œ๋‹ค.

๐Ÿ‘ Note

formatter functions์„ ์‚ฌ์šฉํ•  ๋•Œ binding์€ ์ž๋™์œผ๋กœ 'one-way'๋กœ ์ „ํ™˜๋œ๋‹ค. ๋”ฐ๋ผ์„œ 'two-way' ์‹œ๋‚˜๋ฆฌ์˜ค์—๋Š” ํฌ๋งทํ„ฐ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์ง€๋งŒ data types์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • i18n/i18n.properties
sendEmail=Send Mail
mailSubject=Hi {0}!
mailBody=How are you?

๐Ÿ”— ์ฐธ์กฐ

profile
coding everywhere

0๊ฐœ์˜ ๋Œ“๊ธ€