0
나는 (서버에서 DB로 다운로드 한 후) SQL 테이블에서 FAQ 데이터를 얻는 ListView를 가지고있다. FAQ 데이터가 다운로드되어 데이터베이스에 올바르게 저장됩니다 (아래 저장된 faq은 서버에 변경 사항이있을 때 올바른 FAQ가 표시됨).하지만 ListView UI에는 변경 내용이 표시되지 않습니다. 올바른 업데이트 된 FAQ는 앱이 다시 시작될 때 ListView에만 표시됩니다.Appcelerator에서 DB 컬렉션의 변경으로 ListView UI를 자동으로 업데이트/동기화하는 방법은 무엇입니까?
사용자가 새로 고침/다시로드 할 때 목록 뷰 이 자동으로을 업데이트 할 수 있습니까?
faqs.xml
<Collection src="faqCollection" instance="true" id="faqData"/>
.
.
<ListView id="faqListView" defaultItemTemplate="plainTemplate">
<RefreshControl id="refresh" onRefreshstart="reloadFAQs" platform="ios"/>
<Templates>
<ItemTemplate name="plainTemplate" id="plainTemplate">
<View width="98%" class="listViewRow">
<Label bindId="title" id="title"/>
</View>
</ItemTemplate>
</Templates>
<ListSection id="faqListSection" dataCollection="$.faqData" >
<ListItem title:text="{faq_title}" nid:itemId="{faq_nid}" mainText:text="{faq_text}" template="{template}"/>
</ListSection>
</ListView>
faqs.js
function autoSaveFAQs(faqs){
$.faqData.deleteAll();
console.log("faqs in autosave: " + JSON.stringify(faqs));
var f;
_.each(faqs, function(faq){
faq.time = now; //adds the timestamp when FAQs have been downloaded
f = Alloy.createModel('faqCollection', faq, {silent: true});
$.faqData.add(f);
f.save();
});
var savedFAQs = $.faqData;
savedFAQs.fetch();
console.log("savedFAQs: " + JSON.stringify(savedFAQs)); //shows the updated FAQs when reloaded, but the listview is not populated
}