2013-01-07 3 views
0

roomsGroup이라는 배열 컬렉션에 바인딩 된 룸 개체의 목록이 있습니다. 나는 서버에서 각 서비스를 호출하여 목록에 방을 추가하거나 삭제하는 기능을 가지고있다. 모든 것이 잘 작동합니다. 방이 없으면 첫 번째 목록을 추가합니다. 그런 다음 정확하게 추가되었지만 (서버에서 반환 된 방 객체의 길이는 1입니다.) UI에 표시되지 않습니다. 두 번째 방을 추가하면 모두 나타납니다.컬렉션에 항목이 1 개있는 경우 AS3 필터 함수가 작동하지 않습니다.

전체 모델 클래스 (단일 항목)가 Bindable로 표시되므로 public roomsGroup 변수도 자동으로 Bindable입니다.

'룸 추가'서비스의 결과 처리기에서 서버에서 반환 한 객실을 확인한 다음 객실이라는 로컬 배열 컬렉션에 저장합니다. 그럼 난 = 모델에 객실 바인딩 roomsGroup을 설정

model.roomsGroup = rooms; 
    model.roomsGroup.refresh(); //I tried adding this but it doesn't help. 
    model.roomsGroup.filterFunction = null; //Also tried this, but it doesn't help. 
패널에서

을 목록 구성 요소는 model.roomsGroup 배열 컬렉션에 바인딩 소스가 있습니다

<myPanel:RoomsComponent id="roomsList" roomSource="{model.roomsGroup}" 

또 다른 일을 - myPanel에는 searchupact()라는 함수가 keyup에서 호출되는 텍스트 상자가 있습니다. 그것이하는 일 중 하나는 다음과 같습니다.

model.roomsGroup.filterFunction = roomFilterFunction; 
model.roomsGroup.refresh(); 

그래서 서비스를 호출하고 처음/생성 된 룸이 표시되지 않습니다. 하지만 텍스트 상자에 내용을 입력하면 표시됩니다. 즉, 필터 함수가 표시합니다.

왜 바인딩이 올바르게 설정되어 있는지 궁금해합니다 (목록에있는 항목이 0에서 1 개일 때와 다른 모든 경우에서 작동하기 때문에). 내 생각 엔 필터 함수와 관련이 있다고 생각하지만 정확히 무엇을 모르겠습니다.

도움을 주시면 감사하겠습니다.

+0

로 변경 할 때를하기 때문에 첫 번째 방을 목록에 추가하면 목록 크기는 2가됩니다. 그러나 문제가있는 이유는 실제로 대답하지 않습니다. –

+0

filterFunction의 코드를 표시하고자 할 수 있습니다. 또는 가능하다면 간단한 예제를 제공하십시오. 이것이 일어나고있는 이유를 설명하기에 충분한 정보가없는 것 같습니다. –

답변

0

이 코드 줄 model.roomsGroup.filterFunction = null; 위로 이동해야 문제가 해결됩니다. 코드의

model.roomsGroup = rooms; 
model.roomsGroup.refresh(); //I tried adding this but it doesn't help. 
model.roomsGroup.filterFunction = null; //Also tried this, but it doesn't help. 

블록, 나는 그 문제를 돌봐해야한다고 생각하는 이유 보이지 않고 아무 영향을주지 않는 목록에 더미 공간을 추가하지

model.roomsGroup = rooms; 
model.roomsGroup.filterFunction = null; //This should be first line. 
model.roomsGroup.refresh(); //This should be second line. 
+0

감사합니다. 시도했지만 작동하지 않았습니다. 필자는 필터 기능을 완전히 제거하거나 강제로 실행하려고 시도 할 것입니다. – David