2012-04-25 8 views
1

データビューをカルーセル形式で追加し、リストとして表示します。それから、データビューのいくつかのアイテムを削除しますが、カルーセルビューのリストは変更されません。ビューを更新するにはどうすればよいですか?Sencha touch 2でDataViewのデータレンダリングをリフレッシュする方法

「remove()」、「removeAll()」、「destroy()」、「refresh()」などのいくつかのメソッドを試しましたが、効果はありません。

モデル:

Ext.define('Chihiro.model.User', { 
extend: 'Ext.data.Model', 
config: { 
    fields: [ 'id', 'name', 'nickname', 'signiture', 'gender', 'birthday', 'school', 'job', 'portrait', 'interests', 'dis'], 
    proxy: { 
     type: 'localstorage', 
     id: 'friends' 
    }, 
    autoLoad: true 
} 
}); 

データビュー:

Ext.define('Chihiro.view.userlist.List', { 
extend: 'Ext.DataView', 
xtype: 'userlist', 

store: { 
    model: 'Chihiro.model.User' 
}, 
config: { 
    ui:'loans', 
    useComponents: true, 
    defaultType: 'listitem', 
    emptyText: '<div style="margin-top: 20px; text-align: center">没有找到任何人哦</div>', 
    deselectOnContainerClick: false 
} 
}); 

パネル:

Ext.define('Chihiro.view.contact.List', { 
extend: 'Ext.Carousel', 

xtype: 'contactpanel', 
id: 'contactnavigationview', 

layout: 'vbox', 
config: { 
    fullscreen: true, 
    //autoDestroy: false, 
    scrollable: true, 
    //defaultBackButtonText: '返回', 
    items: [ 
     { 
      xtype: 'titlebar', 
      docked: 'top', 
      title: '好友' 
     } 
    ] 
} 
}); 
+0

あなたのDataViewにバインドされた店舗を持っていますか?その場合は、データストア内の項目を変更するとビューが自動的に更新されます。 –

答えて

2

あなたはデータビューをリフレッシュするために店を再ロードする必要があります。

remove(),removeAll(),destroy()およびrefresh()のようなメソッドは間違いなく有効です。

ストア内のアイテムを変更する場合は、データストアでload()メソッドを呼び出す必要があります。これにより、基本的にデータビューが更新されます。

yourStoreForDataView.load(); 

便利なポスト:Sencha-touch : refresh list : store

+1

ありがとうございますが、まだ問題があります。モデルのプロキシとしてlocalstorageを使用し、ストアのロードを呼び出すときにエラーが発生します。 – cachuanghu

関連する問題