Extjs 在sencha touchs中实现遍历记录prev和next
我正在尝试创建一个面板,在这里我可以来回浏览Extjs 在sencha touchs中实现遍历记录prev和next,extjs,sencha-touch-2,Extjs,Sencha Touch 2,我正在尝试创建一个面板,在这里我可以来回浏览phonegap中的联系人详细信息。到目前为止,我已经成功地从phonegap获取了联系人详细信息,并将其存储到数组中,然后加载到Ext.Store。但是,我如何移动到下一个记录,直到最后一个,因为有这么多的记录 下面是我想要实现的图像 您拥有实现联系人视图屏幕所需的一切,唯一需要做的就是尝试 你甚至可以对我的代码进行更多的优化,不要抄袭过去的代码,只要试着从代码中获得想法就行了 我可以向您解释这段代码,但当您探索自己的代码时,您会理解得更好 1) 基
phonegap
中的联系人详细信息。到目前为止,我已经成功地从phonegap
获取了联系人详细信息,并将其存储到数组中,然后加载到Ext.Store
。但是,我如何移动到下一个记录,直到最后一个,因为有这么多的记录
下面是我想要实现的图像
您拥有实现联系人视图屏幕所需的一切,唯一需要做的就是尝试 你甚至可以对我的代码进行更多的优化,不要抄袭过去的代码,只要试着从代码中获得想法就行了 我可以向您解释这段代码,但当您探索自己的代码时,您会理解得更好 1) 基本上,我创建了带有两个Buton和detail面板的contactView面板 2) “详细信息”面板具有用于显示图像的面板和用于显示详细信息的标签 3) 我使用控制器中的“下一步”和“上一步”按钮控制联系人导航 型号
Ext.define('ContactApp.model.Contact', {
extend: 'Ext.data.Model',
config: {
fields: [
{name: 'name', type: 'string'},
{name: 'mobileNumber', type: 'string'},
{name: 'emailid', type: 'string'},
{name: 'picture', type: 'string'}
]
}
});
商店
Ext.define('ContactApp.store.Contact',{
extend : 'Ext.data.Store',
config : {
model: "ContactApp.model.Contact",
storeId : 'contact',
data : [
{ name:'Anantha', mobileNumber:'9845633215', emailid: 'anantha@gmail.com', picture: 'resources/images/pic.jpg'},
{ name:'Viswa', mobileNumber:'9876543218', emailid: 'viswa@gmail.com', picture: 'resources/images/pic1.jpg'},
{ name:'Aravind', mobileNumber:'9878963213', emailid: 'aravind@gmail.com', picture: 'resources/images/pic2.jpg'},
{ name:'Ramesh', mobileNumber:'9877856321', emailid: 'ramesh@gmail.com', picture: 'resources/images/pic3.jpg'}
],
autoLoad: true
}
});
查看
Ext.define('ContactApp.view.Contact',{
extend : 'Ext.Panel',
xtype : 'contactView',
config : {
items : [{
xtype : 'titlebar',
title : 'Contacts',
items : [{
ui: 'back', text: 'back', align : 'left', action: 'back', hidden: true
},{
ui: 'forward', text: 'next', align : 'right', action: 'next', hidden: true
}]
},{
xtype : 'panel',
itemId : 'contactDetail',
layout : 'hbox',
style : 'margin-left: 15%; margin-top:10%;',
items : [{
xtype : 'panel',
itemId : 'picture',
tpl : '<img src="{picture}" alt="picture" height= "64" width= "64">'
},{
xtype: 'spacer',
width : 40
},{
xtype : 'label',
itemId : 'details',
tpl : '<div>{name}</div><div>{mobileNumber}</div><div>{emailid}</div>'
}]
}]
},
initialize : function() {
this.fireEvent('onContactViewInit',this);
}
});
输出
我们有四项纪录,所以
记录1
记录2
记录3
记录4
我就是这么做的,我的意思是努力 你想过用旋转木马吗?这是一个完美的用例。。。是的,我已经想到了,但同样的问题,当用户交换时,我将如何遍历?你是说“刷卡”?这正是旋转木马的含义,在商店中每一条记录显示一页,当你滑动屏幕时移动到下一条记录……但我有大约1000条记录,所以如果我将项目推到旋转木马中,你不认为它会变慢一点吗?
Ext.define('ContactApp.controller.Contact', {
extend : 'Ext.app.Controller',
config : {
contactCount : 0,
refs : {
contactView : 'contactView',
backBtn : 'button[action=back]',
nextBtn : 'button[action=next]'
},
control : {
contactView : {
onContactViewInit : 'onContactViewInit'
},
backBtn : {
tap : 'onBackTap'
},
nextBtn : {
tap : 'onNextTap'
}
}
},
onContactViewInit : function(){
var contactStore = Ext.getStore('contact');
var count = contactStore.getCount();
if(count){
var index = this.getContactCount();
var record = contactStore.getAt(index);
this.setContact(record.getData());
if(count>1)
this.getNextBtn().show();
}
},
setContact : function(data){
var contactView = this.getContactView();
var contactDetail = contactView.getComponent('contactDetail');
contactDetail.getComponent('picture').setData(data);
contactDetail.getComponent('details').setData(data);
},
onBackTap : function(){
var contactStore = Ext.getStore('contact');
var count = contactStore.getCount();
var index = this.getContactCount();
this.setContactCount(index-1);
var record = contactStore.getAt(index-1);
this.setContact(record.getData());
this.getNextBtn().show();
if(this.getContactCount() == 0)
this.getBackBtn().hide();
},
onNextTap : function(){
var contactStore = Ext.getStore('contact');
var count = contactStore.getCount();
var index = this.getContactCount();
this.setContactCount(index+1);
var record = contactStore.getAt(index+1);
this.setContact(record.getData());
this.getBackBtn().show();
if(this.getContactCount() == count-1)
this.getNextBtn().hide();
}
});