Javascript 如何让幻灯片在Sench touch中显示多个屏幕

Javascript 如何让幻灯片在Sench touch中显示多个屏幕,javascript,json,sencha-touch,jsonp,extjs,Javascript,Json,Sencha Touch,Jsonp,Extjs,我正在开发一个应用程序,当在表单中单击submit按钮时,它会转到另一个屏幕。然而,它只是在窗口外打印结果,而不是真正进入新屏幕。我已经对存储进行了硬编码,以确保在启动应用程序时有数据,并且它仍然在可视区域之外打印数据 这是我的Ext.data.Store: var store = new Ext.data.Store({ model: 'jobSummary', storeId: 'jobStore', data : [{title: 'This is test'}, {t

我正在开发一个应用程序,当在表单中单击submit按钮时,它会转到另一个屏幕。然而,它只是在窗口外打印结果,而不是真正进入新屏幕。我已经对存储进行了硬编码,以确保在启动应用程序时有数据,并且它仍然在可视区域之外打印数据

这是我的Ext.data.Store:

var store = new Ext.data.Store({
  model: 'jobSummary',
  storeId: 'jobStore',
  data : [{title: 'This is test'},
    {title: 'This is test2'},
    {title: 'This is test3'}]
});
以下是我正在使用它的列表:

SearchJobsForm.jobsList = Ext.extend(Ext.Panel, {
  dockedItems : [ {
    xtype : 'toolbar',
    title : 'WTJ',
    dock : 'top',
    items : [ {
      xtype : 'button',
      text : 'Back',
      ui : 'back',
      handler : function() {
        //back button controller
      },
      scope : this
    } ]
  } ],
  items : [ {
    xtype : 'list',
    emptyText : 'No data available.',
    store : 'jobStore',
    itemTpl : '<div class="list-item-title">{title}</div>' 
    +
      '<div class="list-item-narrative">{narrative}</div>',
    onItemDisclosure : function(record) {
    },
    grouped : false,
    scroll : 'vertical',
    fullscreen : true
  } ],
  initComponent : function() {
    SearchJobsForm.jobsList.superclass.initComponent.apply(this, arguments);
  }
});
我已将完整代码粘贴在此链接上以提高可见性: 好的

SearchJobsForm.form是您的主面板,它将包含两个组件:一个是searchForm(带文本/选择输入)和一个面板/结果列表。 在回调中,我们将隐藏()表单并显示()结果列表。这不是一个干净的代码,而是我能从你那里得到的最简单最亲的代码

  • 首先,让我们实例化jobsList
//它具有id(id:'jobsListId')

  • 然后您应该将所有输入放入一个表单(xtype:formpanel, id:'搜索表单')
  • 并在表单后面添加resultPanel
这是密码

SearchJobsForm.form = Ext.extend(Ext.Panel,{

    initComponent: function(){

        Ext.apply(this, {
            id: 'searchForm',
            floating: true,
            width: 250,
            height: 370,
            scroll: 'vertical',
            centered: true,
            modal: true,
            hideOnMaskTap: false,
            items: [
            {
                xtype: 'formpanel', // 1. this is the added formpanel
                itemId: 'searchForm',
                id:  'searchFormId', // this id is important
                items: [
                {  
                    xtype: 'textfield',
                    ...
                }, {
                    xtype: 'textfield',
                    ...

                },
                // all your inputs 
                ]
            },
                // 2. add here the results panel : jobsList
                jobsList
            ],  // the code continues inchanged
                dockedItems: [{
                              ...
-最后,我们将修改ajax回调以隐藏/显示面板。不要删除其中一个,否则您将无法重置表单

//它来了

        Ext.util.JSONP.request({
            url: "http://"+serverAdd+":"+ port+"/users/searchresults.json", 
            format: 'json',
            callbackKey: 'callback',
            params : searchCriteria,                
            callback: function(data) {
                console.log('callback');
                // Call your list-filling fonctions here
                // jobsList.fill(data);
                Ext.getCmp('searchFormId').hide();
                Ext.getCmp('jobsListId').show();

            },
            failure: function ( result) { 
                console.error('Failed'); 
            }
        }); 
对于下一个项目,我建议您使用类和名称空间来避免1000行文件;Ext.ns()是您最好的朋友,可以避免您的许多头痛。

好的

SearchJobsForm.form是您的主面板,它将包含两个组件:一个是searchForm(带文本/选择输入)和一个面板/结果列表。 在回调中,我们将隐藏()表单并显示()结果列表。这不是一个干净的代码,而是我能从你那里得到的最简单最亲的代码

  • 首先,让我们实例化jobsList
//它具有id(id:'jobsListId')

  • 然后您应该将所有输入放入一个表单(xtype:formpanel, id:'搜索表单')
  • 并在表单后面添加resultPanel
这是密码

SearchJobsForm.form = Ext.extend(Ext.Panel,{

    initComponent: function(){

        Ext.apply(this, {
            id: 'searchForm',
            floating: true,
            width: 250,
            height: 370,
            scroll: 'vertical',
            centered: true,
            modal: true,
            hideOnMaskTap: false,
            items: [
            {
                xtype: 'formpanel', // 1. this is the added formpanel
                itemId: 'searchForm',
                id:  'searchFormId', // this id is important
                items: [
                {  
                    xtype: 'textfield',
                    ...
                }, {
                    xtype: 'textfield',
                    ...

                },
                // all your inputs 
                ]
            },
                // 2. add here the results panel : jobsList
                jobsList
            ],  // the code continues inchanged
                dockedItems: [{
                              ...
-最后,我们将修改ajax回调以隐藏/显示面板。不要删除其中一个,否则您将无法重置表单

//它来了

        Ext.util.JSONP.request({
            url: "http://"+serverAdd+":"+ port+"/users/searchresults.json", 
            format: 'json',
            callbackKey: 'callback',
            params : searchCriteria,                
            callback: function(data) {
                console.log('callback');
                // Call your list-filling fonctions here
                // jobsList.fill(data);
                Ext.getCmp('searchFormId').hide();
                Ext.getCmp('jobsListId').show();

            },
            failure: function ( result) { 
                console.error('Failed'); 
            }
        }); 

对于下一个项目,我建议您使用类和名称空间来避免1000行文件;Ext.ns()是你最好的朋友,可以避免你的很多头痛。

嗨,沃厄姆。谢谢你的建议。我明天要做这件事。我的想法是让它发挥作用,然后把它分成几个班,以便更好地理解。我不想从那开始,因为我不懂这门语言。因为我发布了这个问题,所以我没有去任何地方,所以我已经开始了一个新的项目,完全修改了上面提到的整个代码,以获得更好的清晰度。我不知道还能做什么。我明天去试一试,然后回来。再次感谢您的帮助。嘿,沃厄姆,我接受了您的建议,将所有代码转换为MVC,并采用了更结构化的方法。除重置按钮外,所有功能均正常:(你能帮我看一下吗?嗨,沃厄姆。谢谢你的建议。我明天会做这件事。我的想法是让它发挥作用,然后把它分成几节课,以便更好地理解。我不想从那开始,因为我不懂这门语言。因为我发了问题,所以我哪儿也不去,所以我已经开始了为了更清晰,我重新设计了一个新项目,对上面提到的整个代码进行了彻底的修改。我不知道还能做些什么。我明天会试一试,然后回来。再次感谢您的帮助。嘿,沃姆,我接受了您的建议,将所有代码转换为MVC,并采用了一种更结构化的方法。除了t,一切都正常他重设了按钮。:(你能帮我看一下吗。