0

저는 Appcelerator와 협력 중이며 우리 회사의 모바일 앱에서 이전 직원으로부터 픽업 한 메시징 기능을 사용하고 있습니다. 나는 메시지 삭제 기능을 통합하라는 요청을 받았고 메뉴를 추가하고 사용자가 메시지 선택 모드와 읽기 모드 사이를 토글 할 수있는 길을 택했다. 나는 각 메시지 템플리트에 체크 박스 스타일 스위치를 넣고 사용자가 메뉴에서 "선택"을 클릭 할 때 스위치 요소의 가시성을 true로 변경하려고합니다. 이러한 요소는 동적으로 생성되므로 동일한 ID를 가진 요소가 많기 때문에 해당 요소로 요소에 직접 액세스 할 수 없습니다. 저는이 문제에 대한 해결책을 찾기 위해 광범위하게 보았습니다. 특히 티타늄 커뮤니티는 아주 작습니다. 누구든지 가능한 해결책을 알고 있습니까?티타늄 합금 - 동적으로 생성 된 ListView 요소의 속성 변경

<Alloy> 
<Window id='window' > 
<Menu id="menu" platform="android"> 
    <MenuItem id="menuItem1" title="Select" onClick="toggleSelect"/> 
    <MenuItem id="menuItem2" title="Delete All" onClick="clearMessages"/> 
</Menu> 
<View id="ParentViewContainer"> 
    <ScrollView id="ParentScrollView" layout="vertical"> 
    <ListView backgroundColor="transparent" id="messageList"> 
     <Templates> 
     <ItemTemplate name="sentTemplate" id="sentTemplate"> 
      <View class="containerView"> 
      <View id="sentTemplateView"> 
       <Switch id="sentSelectSwitch" class="selectSwitch" bindId="sentSelectSwitch" visible="false" value="false" onChange="toggleChecked"/> 
       <Label bindId="message" id="message"/> 
      </View> 
      </View> 
     </ItemTemplate> 
     <ItemTemplate name="recievedTemplate" id="recievedTemplate"> 
      <View class="containerView"> 
      <View id="recievedTemplateView"> 
       <Switch id="recSelectSwitch" class="selectSwitch" bindId="recSelectSwitch" visible="false" value="false" onChange="toggleChecked"/> 
       <Label bindId="message" id="message"/> 
      </View> 
      </View> 
     </ItemTemplate> 
     </Templates> 
     <ListSection id="listSection"> 
     </ListSection> 
    </ListView> 
    <View id="sndView"> 
     <TextArea id="sndTxt"/> 
     <Button id="sndBtn"/> 
    </View> 
    </ScrollView> 
</View> 

답변

0

내가 목록, 눈에 보이는 체크 박스 하나 하나없이 별도의 템플릿을 만들 것입니다 :

여기 내 XML이다. 그들이 "선택 모드로 전환"할 때 체크 박스 - 보이는 템플릿을 지정합니다. 그런 다음 목록에 itemclick 이벤트를 사용하고 항목의 고유 ID를 배열이나 다른 구조로 밀어 넣으면 나중에 사용자가 제출 단추를 누르면 실제로 삭제됩니다.

0

ListView UI 요소의 목적은 JS와 네이티브 코드 사이의 Kroll Bridge 사용을 줄이기 위해 모든 행을 루핑하고 updateItemAt을 호출하는 것이 잘못된 접근 방법입니다.

얼마나 많은 항목을 그리는 지 알 수는 없지만 메뉴가 구현되는 방식에 따라 올바른 UI (보이거나 보이지 않는)로 목록 항목을 다시 만드는 것이 더 좋은 해결책이 될 수 있습니다.

var itemCount = 1; 
_.each(dataModelObjects, function (_obj) { 
    $['wrapper' + itemCount] = $.UI.create('View', { id: 'someIdInTSS'}); 
    itemCount++; 
}); 
+0

감사에 대한 :보기를 목록을 조작하고 이동하는 동안 보조 노트로

, 동적 고유 ID에 대한 해결책이 같은 될 것입니다, 당신은 같은 ID의 그 도전에 얻을 매우 일반적인 것 당신의 응답 녀석, 나는 둘 다보고 당신을 위해 저를 위해 작동하는 볼 것이다! –