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 개일 때와 다른 모든 경우에서 작동하기 때문에). 내 생각 엔 필터 함수와 관련이 있다고 생각하지만 정확히 무엇을 모르겠습니다.
도움을 주시면 감사하겠습니다.
로 변경 할 때를하기 때문에 첫 번째 방을 목록에 추가하면 목록 크기는 2가됩니다. 그러나 문제가있는 이유는 실제로 대답하지 않습니다. –
filterFunction의 코드를 표시하고자 할 수 있습니다. 또는 가능하다면 간단한 예제를 제공하십시오. 이것이 일어나고있는 이유를 설명하기에 충분한 정보가없는 것 같습니다. –