2009-08-19 1 views
1

프로그래밍 방식의 로직을 MXML 속성에 삽입해야합니까? 몇 가지 단추 또는 관련 구성 요소 (예 : DataGrid 또는 List)의 상태를 기반으로 이벤트를 발송하지 않을 수도 있고 논리가 이벤트 속성 중 하나에 간단하게 포함 할 수있을만큼 간단한 지 알아 내려고하고 있습니다. MXML 여기Flex MXML 속성에 얼마만큼의 로직을 포함해야합니까?

내가 일을 봤는데 방법은 다음과 같습니다

이 예에서
<mx:Script> 
    <![CDATA[ 
     private function sendEvent1():void { 
      if (list.selectedIndex != -1) { 
       dispatchEvent(new Event("click!")); 
      } 
     } 
    ]]> 
</mx:Script> 
<mx:List id="list" dataProvider={listData} /> 
<mx:Button label="Click!" click="sendEvent1()" /> 

는 스크립트 태그에 포함 된 ActionScript는 이벤트가 전달되어야하는지 여부를 결정하는 논리가 포함되어 있습니다. 데이터 공급자에 대한 코드 누락이 조각에 명백한 문제 (예 : 정적 문자열의 일부를 무시

<mx:Button label="Click!" click="if (list.selectedIndex != -1) dispatchEvent(new Event("click!")" /> 

:

버튼은, 그러나, sendEvent1 기능에 대한 필요성을 제거, 조금 수정 될 수 있습니다 등), 내가 두 번째 예제가 몇 가지 문제가 있습니다 :

  • MXML 덜 읽을 수 있습니다 (이것은 더 함수 호출로
  • 은 클릭에 필요한) 길고 복잡 도착 버튼을 사용하면 MXML의 로직이 훨씬 다루기 힘들어집니다.
  • MXML에 로직을 포함 시키면 직관력이 떨어집니다 (적어도 나에게는). MXML의 논리를 알고 싶다면 ActionScript가 필요한 Script 태그를 더보고 싶습니다.

논리를 MXML 속성에 삽입하는 데있어 다른 장점이 있습니까? 나는이 사용법을 점점 더 자주 보았고, 나는 내가 어떻게 일을하고 있었는지를 바꿀 강력한 이유를 놓치지 않고 싶습니다.

+1

귀하의 우려 사항에 동의합니다. MXML에서 직접 이벤트에 로직을 추가함으로써 얻을 수있는 이점은 빠른 프로토 타이핑을위한 것입니다. 예를 들어 코드를 직접 읽는 것을 선호하지만 함수에 대한 더 나은 이름을보고 싶습니다. ;) – tylermac

+0

예, 코드 스 니펫에 대한 빠른 타이핑은 일반적으로 진부한 함수 이름과 ID를 발생시킵니다. 실제 코드는 더 나은 명명 규칙을가집니다;) 여러분의 생각에 감사드립니다! – bedwyr

답변

1

코드가 한 줄 이상 길고 경고 나 가능할 경우 무조건 변수를 설정하면 MXML 코드에 논리를 추가하는 데 실제로 이점이 있다고 생각할 수 없습니다. switch 문을 인라인으로 읽으려고한다고 상상해보십시오.

1

하나 이상의 라이너를 인라인으로 배치하는 것은 좋지 않습니다. 읽기 어렵고 디버깅하기가 어렵습니다. 인라인 코드를 더 읽기 쉽게하려면 중괄호 안에 넣고 여러 줄에 씁니다.