alloy view 작성시 xml의 엘리먼트에 id값을 줄때 – (다시)로 연결하면 에러가 발생한다는 이야기입니다.
resource 폴더를 보니…화일 생성을 제대로 못하는것 같더군요..
혹시나해서 간단하게 샘플 만들어 테스트 하니 역시더군요.
################# index.xml ############
<Alloy>
<Window class=”container”>
<Button id=”button1″ onClick=”doClick”>Hello, World</Button>
</Window>
</Alloy>
################# index.js ############
function doClick(e) {
alert(JSON.stringify(e.source));
}
$.index.open();
###################
Button id를 button, button1, button_1은 에러가 안납니다.
하지만 button-1은 컴파일 자체가 안됩니다. 해서 생성된 resources/alloy/controller/index.js 보면 뭔가 생성됬는데 엉망으로 되어 있습니다.
또 button-1-a는 컴파일은 됩니다. 하지만 실행이 안됩니다. 여기도 마찬가지로 보면..약간 어색한 구석이 있습니다.
파일 중간을 보면
doClick ? $.__views.button – 1 – a.on(“click”, doClick) : __defers["$.__views.button-1-a!click!doClick"] = !0;
보시듯 공백이 들어가는 듯 합니다만 확실치는 않네요…^^
버튼 말고 다른 UI도 동일한듯 싶습니다.
제가 scrollView 에 imageView로 몇개 유튜브 이미지를 붙이고, id값에 동영상 키값을 줬더니만…
어떤 경우엔 뷰가 실행이 되고, 어떤 경우엔 안되는거에요… 알고보니..
tIcSa-p5dmg 이런 값이 들어갔더라구요..그래서 뷰 3개중 저게 포함될때는 실행이 안됬던겁니다.
컴파일 시 에러가 안나니 원인을 못찾아서…그래 시간보내다 혹시나 해서 몇가지 해보다 알게된 내용입니다만…
아마 예상으론 common.js 방식일땐 문제가 없을거 같고… 쓸데없이 화면 그린다고만 안하면 문제는 없을듯..-.-
데이타 바인딩 형태로 하실때는 그냥 커스텀으로 어트리뷰트 작성하시면 JSON.stringify(e.source.어트리뷰트)) 이런식으로 읽어 오실수 있으니
궂이 id나 기타 기본 프로퍼티(어트리뷰트)에 값 주고 그럴 필요는 없었던 건데 습관적으로다 … ^^
수고하세요~