TagWire

TagWire

Data에 꼬리표를 붙이다.

TagWire 기초

기본 형식 : _ + Variable Name + - + Tail Function

_VariableName-TailFunction

Html 태그에 적용하는 법 : 필요한 기능 만큼 class 에 추가

class="_VariableName-TailFunction  _VariableName-TailFunction  ...  _VariableName-TailFunction"

동일한 변수로 여러가지 Tail Function을 처리하는 경우 Variable Name 생략가능 (이 경우 실행순서를 정할 수 있습니다.)

class="_test-text  _test-title  _test-id"
class="_test-text-title-id"

data-, aria-는 무조건 하나의 Tail Function으로 처리됩니다.

class="_test-data-text-title-id" // data-text-title-id="변수값" 형태로 적용된다.

데이터를 반영하는 법 : 옵션은 생략가능

TagWire.render( TARGET, DATA, OPTION );

jQuery Library를 사용하는 경우, TagWire 관련 plugin이 설정됩니다.

jQuery( TARGET ).render( DATA, OPTION );

사용자가 정의하는 Tail Function : 호출 될 때 타겟 엘리먼트, 변수값, 변수명이 파라미터로 전달됩니다.

TagWire.tail.FunctionName = function( target, value, name ) {  ...  };

아래 단어들, 특히 밑줄이 그어진 단어는 가급적이면 dataset 내에서 변수(속성)명으로 사용하지 않아야 합니다.

template array reverse topdown bottomup tidx idx i fix item new old render block capture clone hidden objdata itemdata listdata list itemtype async ready finish complete

기본 Tail Function

태그의 속성에 변수의 값을 입력합니다. Html 태그의 표준 속성은 모두 Tail Function으로 사용할 수 있으나, 비표준 속성은 태그에 선언되어 있어야 값이 적용됩니다.

변수의 값을 텍스트로 출력합니다.

변수의 값을 html 코드로 입력합니다.

변수의 값을 value에 넣습니다. 태그의 속성을 설정하는 _변수명-value와 동일한 기능을 하지만, -val{element}.value로 처리됩니다.

변수의 값을 data-변수명 속성에 저장합니다. 만약 _변수명-data-이름 형태로 설정하면, data-이름으로 속성이 설정됩니다.
* 주의 : 변수명이나 이름은 태그의 속성으로 설정되기 때문에 대/소문자를 구분하지 않고 모두 소문자로 적용됩니다.

엘리먼트의 텍스트 노드에서 #변수명#으로 들어있는 부분을 변수의 값으로 변환합니다. -replace와의 차이점은 하위 엘리먼트에 영향을 주지 않고 자신의 텍스트만 변경합니다. 따라서 자식노드의 이벤트 처리 등이 유지됩니다.

엘리먼트 하위에 있는 모든 #변수명# 부분을 변수의 값으로 변환합니다. -insert와의 차이점은 innerHTML을 이용하여 내부 html을 다시 입력하는 방식입니다.

태그 속성에서 #변수명#으로 들어있는 부분을 변수의 값으로 변환합니다.

변수의 값이 true인 경우 element를 노출합니다. false인 경우는 display:none;처리 합니다.
* 변수의 값이 false로 처리되는 조건은, false, null, undefined, 0, "", "false", "null", "undefined", "0"인 경우입니다.

-show와 반대의 처리를 합니다. 변수의 값이 true인 경우 element를 display:none; 처리합니다.
* 변수의 값이 false로 처리되는 조건은, false, null, undefined, 0, "", "false", "null", "undefined", "0"인 경우입니다.

변수의 값이 true인 경우 element를 보존합니다. false인 경우는 삭제합니다.
* 변수의 값이 false로 처리되는 조건은, false, null, undefined, 0, "", "false", "null", "undefined", "0"인 경우입니다.

-keep과 반대의 처리를 합니다. 변수의 값이 true인 경우 element를 삭제합니다. false인 경우는 보존합니다.
* 변수의 값이 false로 처리되는 조건은, false, null, undefined, 0, "", "false", "null", "undefined", "0"인 경우입니다.

변수의 값이 true인 경우, 변수명을 class로 추가합니다. false인 경우 변수명을 class에서 삭제합니다. -_setClass 형태로 _를 붙이면 반대로 false일때 class를 추가합니다.
* 변수의 값이 false로 처리되는 조건은, false, null, undefined, 0, "", "false", "null", "undefined", "0"인 경우입니다.

변수의 값을 class에 추가합니다.

변수의 값과 동일한 class를 삭제합니다.

브라우저의 console에 현재 element와 변수값을 출력해줍니다. TagWire가 제대로 동작하는지 확인을 하기 위해 사용할 수 있습니다.

사용자 정의 Tail Function

기본적으로 정의된 -text, -html 같은 Tail Function을 사용자가 정의할 수 있습니다. TagWire.tail에 선언 하는 사용자 정의 함수는 기본 Tail Function이 실행 된 후에 실행됩니다. 만약 내장 함수와 동일한 이름으로 정의하는 경우, 내장 함수에 override됩니다. 정의한 함수를 삭제하면 다시 내장 함수가 동작됩니다.

사용자 정의 tail 함수의 리턴값은 연달아 사용하는 다음 tail함수의 value에 전달됩니다. 만약 리턴값이 없거나 undefined인 경우는 앞에서 전달된 값을 그대로 다음으로 전달합니다.

객체 사용과 범위 제한

Objectarray 내부의 값을 사용하기 위해서는, 사용하려는 element에 _객체명 형태로 선언을 해야합니다. 이렇게 선언된 element와 그 하위에서만 해당 object 내부의 값들을 사용할 수 있게 됩니다.

데이터를 적용할 element를 지정하면, 해당 element에서만 render하는 데이터를 사용 할 수 있습니다.

Object의 변수명이 global이면, render 할 다른 데이터를 우선적으로 적용한 후 global 데이터를 처리합니다. 예를 들어 _template 처럼 동적으로 생성되는 element에 공통된 값을 적용해야 하는 경우 사용할 수 있습니다.

Render하는 objectarray 데이터가 화면에 즉시 반영되지 않아도 되는 경우는, 다른 부분의 처리가 우선되도록 _async 옵션을 이용하여 비동기로 처리할 수 있습니다.

Object 데이터를 해당 element에 render 해줍니다. 배열의 인자가 object일 때, 별도로 render 처리하는 용도 등으로 사용할 수 있습니다.

_block 옵션이 설정된 element는, 해당 element에 설정된 모든 object 무력화 시켜 데이터가 반영되지 않게 막습니다. 상위나, 하위에서 선언된 object는 막지 않습니다.

배열과 리스트의 구성

배열의 길이값을 사용할 수 있습니다. Object 하위 데이터와 마찬가지로, _배열이 추가된 엘리먼트 범위내에서 사용가능합니다.

Array를 이용한 반복적인 태그 구조를 만들기 위해, 리스트의 컨테이너가 될 element에 -list를 선언합니다. Arrayobject처럼, 리스트를 선언한 element나 그 상위의 element에서 array 변수명을 선언해서 사용할 범위를 지정해야 합니다.
리스트를 만들기 위해서 꼭 ul, ol, dl 같은 태그를 사용할 필요는 없습니다. 어떤 태그도 사용가능합니다.

배열의 요소값을 사용하려면 배열의 변수명 뒤에 index를 붙인 상태로 처리합니다. 예를 들어 첫번째 인자를 사용하려면 _배열-0-함수명 형태가 됩니다. 이 기능은 컨테이너 엘리먼트에 _array가 선언되어 있어야합니다.

리스트를 생성한 상태에서 array의 데이터를 element에 반영하는 방법은 3종류가 있습니다.
인자가 string, number, boolean 으로 구성된 경우, 인자값을 참조하기 위한 변수명이 없기 때문에, _item 키워드를 이용합니다.
인자가 object 인 경우는 해당 object 내에 있는 변수를 그대로 사용합니다.
인자가 array 인 경우는 _item-list 내용을 참고하세요.

다중배열인 경우, 리스트를 생성한 element 하위에서 다시 리스트를 생성할 수 있습니다.

0부터 시작하는 index를 사용할 수 있습니다.

1부터 시작하는 index를 사용할 수 있습니다.

1부터 시작하는 고유한 index를 사용할 수 있습니다. iidx는 리스트가 새로 생성되면 항상 0 혹은 1로 시작하지만, tidx는 지금까지 뿌려진 template의 수가 누적되어 증가합니다. _bottomup 옵션이 있으면 아래부터 위로 갈 수록 숫자가 커집니다.

배열데이터를 사용합니다. -list로 선언한 element에서만 사용할 수 있습니다.

배열의 인자 데이터를 사용합니다. _template로 선언한 element에서만 사용할 수 있습니다.

하나의 리스트에 선언된 여러개의 template중, 변수의 값에 따라 동적으로 선택하여 추가할 수 있습니다.

리스트에서 반복적으로 표시 할 element에 선언합니다. -list의 자식노드만 선언할 수 있으며, 어떠한 형태라도 상관 없습니다.

배열의 요소값을 개별적으로 사용 할 때, 해당 컨테이너에 _array를 선언해야 합니다.

이 옵션를 선언한 리스트는 배열을 render할 때, 기존에 생성된 리스트를 삭제하지 않고, 그 하단에 계속해서 추가합니다.

이 옵션를 선언한 리스트는 배열을 render할 때, 기존에 생성된 리스트를 삭제하지 않고, 그 상단에 계속해서 추가합니다. 보통 가장 최근의 리스트가 상단에 표시되는 경우 사용합니다. 단, 배열의 순서는 전달된 순서대로 표시되므로, 순서를 뒤집어야 하는 경우 _reverse 옵션를 사용합니다.

배열을 역순으로 반영합니다.

리스트를 지정한 수만큼 제한합니다.

이 키워드는 리스트가 생성될 때 자동으로 추가됩니다. _item은 생성된 모든 리스트에 추가되고, _new는 가장 마지막에 render한 리스트에 추가되며, _old는 마지막 render 직전까지 추가되어 있던 리스트입니다.

Element 원형 복구

원래 상태를 보존해야 할 필요가 있는 경우 _capture 옵션을 추가합니다. 이 옵션이 있는 경우 최초 render 시점에 변형하기 전 형태를 저장합니다. 원형이 저장된 상태가 되면 _capture class는 삭제하고, _clone class가 추가됩니다.

_변수명-restore

변수의 값이 true면, 해당 element를 삭제하고 _capture로 저장한 원형으로 교체합니다. -_restore 형태로 사용하면 false일 때 복구합니다.

_변수명-restoreAttr

변수의 값이 true면, 해당 element의 모든 속성값을 _capture로 저장한 원형으로 복구합니다. -_restoreAttr 형태로 사용하면 false일 때 복구합니다.

_변수명-restoreText

변수의 값이 true면, 해당 element의 내용을 _capture로 저장한 원형의 내용으로 교체합니다. -_restoreText 형태로 사용하면 false일 때 복구합니다.

_변수명-restoreHtml

변수의 값이 true면, 해당 element의 html 태그를 _capture로 저장한 원형으로 교체합니다. -_restoreHtml 형태로 사용하면 false일 때 복구합니다.

_변수명-restoreChild

변수의 값이 true면, 해당 element를 자식 노드를 _capture로 저장한 원형으로 교체합니다. -_restore 형태로 사용하면 false일 때 복구합니다.

TagWire CSS

_template, _capture

_template_capture는 항상 display:none; 상태로 숨겨집니다.

데이터를 바인딩 하기 전 상태를 화면에 노출하지 않을 때 사용합니다. render 메서드를 호출하면, 해당 엘리먼트 내의 모든 _hidden 클래스는 제거됩니다.

이벤트 처리

_render-ready-함수명

TagWirerender 직전에 함수를 호출합니다. 즉 모든 Tail Function이 호출되기 전에 처리되며, 함수에 TagWire.render에서 전달한 데이터를 파라미터로 전달합니다. 함수의 return 값이 false이면 render 처리가 취소됩니다.

_render-finish-함수명

TagWirerender 직후에 함수를 호출합니다. 즉 모든 Tail Function이 호출된 후에 처리되며, 함수에 TagWire.render에서 전달한 데이터를 파라미터로 전달합니다.

_render-complete-함수명

TagWirerender 가 완전히 끝난 후 함수를 호출합니다. 함수에 TagWire.render에서 전달한 데이터를 파라미터로 전달합니다.

_객체-ready-함수명

특정 objectarrayrender 직전에 함수를 호출합니다. 즉 해당 데이터에서 처리할 모든 Tail Function이 호출되기 전에 처리되며, 대상 objectarray를 함수의 파라미터로 전달합니다. 함수의 return 값이 false이면 render 처리가 취소됩니다.

_객체-finish-함수명

특정 objectarrayrender 직후에 함수를 호출합니다. 즉 해당 데이터에서 처리할 모든 Tail Function이 호출된 후에 처리되며, 대상 objectarray를 함수의 파라미터로 전달합니다.

_객체-complete-함수명

TagWirerender 가 완전히 끝난 후 함수를 호출합니다. 대상 objectarray를 함수의 파라미터로 전달합니다.

_배열-item-ready-함수명

Array의 개별 리스트를 생성하기 직전에 함수를 호출합니다. 호출하는 함수에 대상 array의 인자를 파라미터로 전달합니다. 함수의 return 값이 false인 경우 리스트를 생성하지 않습니다.

_배열-item-finish-함수명

Array의 개별 리스트를 생성하고 나서 함수를 호출합니다. 호출하는 함수에 대상 array의 인자를 파라미터로 전달합니다.

_배열-item-complete-함수명

TagWirerender 가 완전히 끝난 후 함수를 호출합니다. 호출하는 함수에 대상 array의 인자를 파라미터로 전달합니다.