2016-06-08 8 views
0

List가 들어있는 XML보기가 있고 List에는 입력, 콤보 상자 등이있는 CustomListItem이 들어 있습니다.SAPUI5 목록 또는 테이블 컨트롤의 액세스 컨트롤

이제 런타임시 setEnabled (true) 또는 false와 같은 컨트롤의 속성을 조작하고 싶습니다. 이를 위해서는 목록의 항목을 반복하고 컨트롤에 액세스해야합니다. 권리?

List에서 getItems를 사용하면 ListItemBase의 배열을받습니다. ListItem에 포함 된 컨트롤을 어떻게 얻을 수 있습니까?

도움/의견 보내 주시면 감사하겠습니다.

답변

1

ListItemBase 개체 od List.getItems()은 실제로 사용자 지정 목록 항목입니다. 모든 속성과 메서드에 직접 액세스 할 수 있습니다 (JavaScript로 캐스팅하지 않음).

var listItems = list.getItems(); 
for (var i = 0, len = listItems.length; i < len; i++){ 
    var controls = listItems[i].getContent(); 
    var input = controls[0]; 
    var comboBox = controls[1]; 
    // and so on. 
} 

그러나 첫 번째 질문에 대한

: 당신이 당신의 목록을 작성하는 데이터 바인딩을 사용하는 경우에 당신은 너무 enabled처럼 추가 속성에 대한 데이터 바인딩을 사용해야합니다. expression binding 또는 multipart binding together with a formatter function을 사용하여 목록 행의 모델 데이터 (상대 바인딩 경로) 및 사용 가능한 모든 모델의 다른 데이터 (절대 바인딩 경로)와 같은 속성을 계산할 수 있습니다.

뷰어의 일부 상태를 나타내며 바인드 할 수있는 간단한 JSONModel 인 viewModel을 만드는 것이 좋습니다.

예제가 필요한 경우 수행하려는 작업에 대해 더 자세히 알려주십시오.

+0

Thnaks, 좋은 대답입니다. 항목을 반복하는 초기 아이디어에서 속성에 대한 전용 viewModel 및 Databinding으로 바꿨습니다. 그것은 훨씬 잘 작동하고 다루기 쉽습니다. –