본문 바로가기

Javascript/ExtJS15

preventDefaultAlign 문서에도 없는 config container에 floating속성을 사용해서 화면에서 정렬 시켜줘야 하는 기능이 있었다. alignTo 함수나 showBy 함수를 이용해서 정렬하는데 정렬이 됐다가 화면의 중앙으로 이동하는 것이다. (디버깅 해보니) 참고로 alignTo 함수는 컴포넌트가 visible 상태여야만 한다. 직감적으로 defaultAlign 문제겠구나 하고 수정했는데 offset관련 config이나 메쏘드가 없어서 문제 였다. 내가 원하는 건 defaultAlign을 사용 안하는건데... config도 존재 하지 않아서... ExtJS 내부 소스를 뒤적뒤적 하다보니 내가 원하는 관련 config를 찾았다! 문서에는 명시되어 있지 않다. 속성명은 preventDefaultAlign이다. 해당 속.. 2019. 5. 2.
사용자 정의 Bind Custom bind config ExtJS에서 제공해주는 bind config이 아닌 사용자 정의 bind config을 만들고 싶을 때가 있다. 어떻게 해야할까? 사용법 config: { foo: null, // null 이외의 값으로 초기화 시 update 이벤트 발생 }, twoWayBindable: ['foo'], 먼저 config를 추가 해주고 twoWayBindable에 해당 값을 설정 해준다. (twoWayBindable 관련 사항은 문서 참조) updateFoo() { // Do something } 이렇게 설정해주면 간단하게 된다. ViewModel이나 setFoo를 이용해서 값을 설정하면 updateFoo 함수가 실행된다. 2019. 4. 16.
Publish Custom ViewModel 데이터 ExtJs에서는 사용자에게 기본적인 viewModel 데이터를 제공해준다. 예를 들면, Text 컴포넌트는 기본적으로 rawValue, value, dirty 값을 제공한다. 해당 값들은 viewModel 및 reference를 이용해서 사용할 수 있다. 하지만 다른 값들을 나의 입맛에 맞게 사용하고 싶을 때가 있다. 그 때 사용 할 수 있는게 publishes란 config과 publishState라는 함수다. 사용법 Text 컴포넌트에 값이 유효한지 체크하는 config를 추가해서 사용하고 싶다면, publishes: {'value', 'rawValue', 'dirty', 'valid'} valid라는 값을.. 2019. 4. 13.
Override 조심! 조심! 조심! Override는 예상치 못한 동작을 야기한다. ExtJS는 사용자에게 많은 확장성을 제공해준다. 하지만 무분별하게 사용 할 경우 어디에서 문제가 발생하는지 찾기 힘들게 만든다. 특히나 override!! override를 하는 경우에는 override 하고자 하는 메소드를 꼭! 참고해서 작성 해야한다. override 메소드가 내부적으로 처리하는 필수 로직이 있는데 무작정 덮어써버리면 해당 로직이 사라지게 되고 이상동작 증상이 발견된다. Template Method를 사용하게 될 경우 주의해야 한다. 상위 함수를 꼭 호출 해야하는 경우에는 override 함수 내부에서 컴포넌트.prototype.[Template Method].apply(this); 를 호출하도록! 2018. 9. 7.
아직 그려지지 않는 컴포넌트에 이벤트 핸들러 추가하기 ExtJS에서 컴포넌트에 이벤트를 추가하는 방법은 여러가지가 존재한다. 생성 시에 listeners에 추가하기 addEventListener를 이용해서 추가하기 .on 함수 .mon 함수 기타 등등 하지만 생성 시에 추가하지 않고 나중에 추가하려고 하는데 아직 화면상에 렌더링이 되지 않았다면 on, addEventListener, mon 함수를 사용해서 추가 할 수 없다. 어떻게 해야할까? 컴포넌트.listeners = [{ click: function, select: function, }, 컴포넌트.listeners ]위의 방식대로 하면 기존 select와 click 이벤트는 유지한 채 추가된다. (덮어쓰기가 아님) 2018. 9. 5.
Dataview 선택이 풀려버리는 증상 Dataview에서 아이템 선택이 풀려버린다? Dataview에서 아이템을 클릭하다보면 어느 순간 selection이 풀려있는 아이템을 볼 수 있다. 코드 로직에서 잘못됐나 살펴봤지만 문제점을 찾지 못하던 중 Dataview의 container 관련 이벤트를 핸들링 해보니...여기가 문제였다. 무엇이 문제였을까? 사용자는 Dataview의 아이템을 클릭하길 원했다. 하지만 간혹 Dataview의 container가 클릭되는 현상이 발생한다. 이렇게 되면 클릭은 했는데 Dataview 아이템은 선택이 안되어있는 버그처럼 보이는 증상이 발생한다. 해결책은 간단하다. containerclick 또는 beforecontainerclick 이벤트에서 return false; container 클릭 시에는 무시 해.. 2018. 9. 4.