2012-12-10 4 views
2

sencha touch의 새로운 기능입니다. Ext.plugin.PullRefresh 및 Ext.plugin.ListPaging 플러그인을 사용하여 내 페이지를 새로 고치는 목록 페이지가 있지만 새로 고침 한 후 중복 항목이 나타나는 문제가 있습니다.새로 고침하고 목록 페이지에 복사 복제본을 나열하십시오.

여기

Memberlist.js

Ext.define('bluebutton.view.BlueButton.MemberList', { 
    extend: 'Ext.List', 
    xtype: 'memberlistcard', 
    requires: [ 
     'Ext.field.Select', 
     'Ext.field.Search', 
     'bluebutton.view.BlueButton.MemberDetail', 
     'Ext.plugin.ListPaging', 
     'Ext.plugin.PullRefresh' 

    ], 
    config: { 
     iconCls: 'team1', 
     title: 'Member List', 
     styleHtmlContent: true, 
     scrollable: 'vertical', 

     store : { xclass : 'bluebutton.store.BlueButton.MemberList'}, 
     grouped: true, 
     indexBar: true, 
     limit: 5, 
     plugins: [ 
        { xclass: 'Ext.plugin.ListPaging', 
         autoPaging: true }, 
        { xclass: 'Ext.plugin.PullRefresh' } 
       ], 

     id :'memberlist', 
     items: [ 

      { 
       xtype: 'toolbar', 
       docked: 'top', 

       items: [ 
        { 
         xtype: 'selectfield', 
         name: 'gender', 
         cls: 'txtwhite', 
         options: [ 
          { text: 'Active Member', value: 'both' }, 
          { text: 'Delete Member', value: 'male' }, 
          { text: 'Suspended Member', value: 'female' } 
         ] 
        }, 

        { xtype: 'spacer' }, 

        { xtype: 'searchfield' , 
         itemId:'membersearch', 
         id :'membersearch' 
        } 
       ] 
      } 
     ], 
     emptyText: '<p class="no-search-results">No member record found matching that search</p>', 
     itemTpl: Ext.create(
      'Ext.XTemplate', 
      '<div class="tweet-wrapper">', 
       '<table>', 
        '<tr>', 
         '<td rowspan="2" width="1%">', 
         ' <img src="{imgUrl}" width="170" height="170" />', 
         '</td>', 
         '<td>', 
         ' <div class="tweet">', 
         '  <h2>{memberId}</h2>', 
         '  <h3>Name: {name}</h3>', 
         '  <h3>Age : {age}</h3>', 
         '  <h3>Address : {address}</h3>', 
         '  <h3>Point Avalaible : {pointAvalaible}</h3>', 
         '  <h3>Last Visited : {lastVisited}</h3>', 
         ' </div>', 
         '</td>', 
        '</tr>', 
       '</table>', 
      '</div>' 


     ), 



    }, 


}); 

~ 스토어

Memberlist.js이

Ext.define('bluebutton.store.BlueButton.MemberList', { 
extend: 'Ext.data.Store', 

config: { 
    grouper: { 
     groupFn: function (record) { 
      return record.get('name')[0]; 
     } 
    }, 

    fields: ['memberId', 'name','age' ,'imgUrl','address','lastVisited','pointAvalaible'], 
     pageSize: 5, 
     autoLoad: false, 
     storeId :'memberlist', 

    data: [{ 
     memberId: 'Kenny', 
     name: 'Kenny Chow', 
     imgUrl: '/bluebutton/resources/images/user3.png', 
     age: '20', 
     address:'The Business Centre , 61 Wellfield Road , Roath, Cardiff, CF24 3DG', 
     pointAvalaible :'10', 
     lastVisited: '26/11/2012, 11:52 AM', 




    }, { 
     memberId: 'Anthony', 
     name: 'Anthony Tan', 
     imgUrl: '/bluebutton/resources/images/user3.png', 
     age: '21', 
     address:'3 Edgar Buildings , George Street , Bath , England , BA1 2FJ', 
     pointAvalaible :'44', 
     lastVisited: '27/11/2012, 09:52 AM' 
    }, 

    { 
     memberId: 'Nicholas', 
     name: 'Nicholas Chen', 
     imgUrl: '/bluebutton/resources/images/user3.png', 
     age: '22', 
     address: '91 Western Road , Brighton ,East Sussex ,England ,BN1 2NW ', 
     pointAvalaible :'30', 
     lastVisited: '30/11/2012, 15:52 PM' 
    }, 

    { 
     memberId: 'Admin2', 
     name: 'Admin2', 
     imgUrl: '/bluebutton/resources/images/user3.png', 
     age: '30', 
     address: '50 Eestern Road , Brighton ,West Sussex ,England ,BN1 34W ', 
     pointAvalaible :'120', 
     lastVisited: '01/12/2012, 15:52 PM' 
    }, 

    { 
     memberId: 'User2', 
     name: 'User2', 
     imgUrl: '/bluebutton/resources/images/user3.png', 
     age: '25', 
      address:'Office 33 ,27 Colmore Row ,Birmingham, England ,B3 2EW', 
      pointAvalaible :'32', 

       lastVisited: '30/11/2012, 18:52 PM' 
     } 



    ] 
    } 
}); 

도와주세요 내 코딩

~보기입니다. 감사합니다

답변

1

나는 또한이 문제에 직면했다. 나는 pullrefresh에서 새로 고침 기능을 무시하고

 
refreshFn(){ 
    Ext.getStore(storeid).load() 
} 
0

은 현재 상점이 새로 고침에 따라 새로운있는 레코드를 결정하는 방법이 없습니다 덧붙였다. 이 문제를 해결하려면 상점에서 사용할 수있는 정의 된 idProperty로 Ext.data.Model 인스턴스를 만들어야합니다. 일단 생성되면 상점의 'model'속성을 모델의 이름으로 설정하십시오. 그런 다음 저장소가 새로 고쳐지면 실제로 어떤 레코드가 새로운 것인지를보고 삽입 할 수 있습니다.

상점 설정에서 '필드'속성을 제거하고이 교체 :

model: 'bluebutton.model.BlueButton.MemberList' 

모델 샘플 :

Ext.define('bluebutton.model.BlueButton.MemberList', { 
extend: 'Ext.data.Model', 
config: { 
    idProperty: 'memberId', 
    fields: ['memberId', 'name','age' ,'imgUrl','address','lastVisited','pointAvalaible'] 
} 
} 
0

나는 당신과 똑같은 문제를 가지고있다. 이것은 이상한 문제이지만 내 응용 프로그램이 작동하는 데 익숙해 져서 언젠가 플러그인을 새로 고침하기 위해 끌어 오기 목록을 사용하여 필드를 복제하기 시작했습니다.

데이터 저장소에 idProperty를 추가하면 [새로 고침] 플러그인의 onLatestFetched 함수에서 새로 고침이 실패했습니다. 내 조사가 결함이있는 라인이 것을 시사한다 :

oldRecord = oldRecords.getByKey(newRecord.getId()); 

newRecord.getId() newRecord이 제대로 경우에도 항상 정의했다. 나는 다음과 같은 방법으로이 줄을 패치하여 내 문제를 해결 :

oldRecord = oldRecords.getByKey(newRecord.internalId;); 

이 나를 위해 일했다. 이것은 정말로 미래의 증거가 아니며 그것이 모든 상황에서 효과가 있다는 것을 확신하지는 못하지만 당신을 도울 수 있습니다.