Sencha Touch 2 MVC - 如何使用按钮切换视图

2023-11-21

我有这个控制器:

Ext.define('MyApp.controller.Test', {
    extend: 'Ext.app.Controller',

    config: {

    },

    refs: [
        {
            ref: 'first',
            selector: '#first'
        },
        {
            ref: 'second',
            selector: '#second'
        }
    ],

    views : [
        'TestMain',
        'TestSecond'
    ],

     init: function() {
          this.getTestMainView().create();


        this.control({
            '#first': {
                tap: function() {
                    //how do I go to second view here?
                }
            },
            '#second': {
                tap: function() {
                }
            }
        });
    }
});

这两个视图:

    Ext.define('MyApp.view.TestMain', {
    extend: 'Ext.Container',
    xtype: 'testmain',

    config: {
        fullscreen: true,
        layout: 'vbox',
        scrollable: true,
         items: [
                {
                    xtype: 'button',
                    ui: 'normal',
                    id: 'first',
                    text: 'Go To Second Screen',
                    handler: function() {

                        //how do I go to second view here?
                    }
                }
            ]
        }
});

...

    Ext.define('MyApp.view.TestSecond', {
    extend: 'Ext.Container',
    xtype: 'testsecond',

    config: {
        fullscreen: true,
        layout: 'vbox',
        scrollable: true,
        items: [
                {
                    xtype: 'button',
                    ui: 'normal',
                    id: 'second',
                    text: 'Go To First Screen',
                    handler: function() {
                    }
                }
            ]
        }
});

我希望当我单击第一个按钮时加载第二个视图,反之亦然当我单击第二个按钮时加载。看来我可以在按钮处理程序或控制部分中添加代码 - 我希望能提供两者的示例(除非它们相同),并且可能解释哪种方法最好以及原因。

请注意,我不想使用卡片布局或选项卡面板 - 我想知道如何从一个独立视图切换到另一个独立视图(在我的应用程序中,我有一个卡片面板和一个选项卡面板,我需要使用按钮在两个组之间切换)

Thanks!!


您应该使用而不是处理程序this.control在控制器中:

this.control({
    '#first': {
        tap: function() {
            Ext.Viewport.add({
                xtype: 'testsecond'
            });
        }
    },

(您可以删除handlers:从视图定义中的按钮)

另外,您可能不应该首先对 id 进行硬编码。

我处理这样的按钮的方式是:

items: [
            {
                xtype: 'button',
                ui: 'normal',
                text: 'Go To First Screen',
                go: 'testsecond'
            },
       ...

然后在适用于所有视图的基本控制器中,我执行以下操作:

this.control({
    'button[go]': {
        tap: function(btn) {
            Ext.Viewport.setActiveItem({
                xtype: btn.go
            });
        }
    },
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sencha Touch 2 MVC - 如何使用按钮切换视图 的相关文章

  • 使用 store sencha touch 2 将数据加载到列表中

    我已经使用 Sencha touch 2 创建了导航视图 导航视图有列表组件 我想使用商店和模型加载它 我根据需要创建了模型并存储 运行我的应用程序时 列表不会呈现任何数据 它还在 conolse 中发出警告 Ext dataview Li
  • FB.getLoginStatus 突然停止在 Android 浏览器上工作

    我曾经使用过这段代码 FB getLoginStatus function response 但突然间它不起作用 回调不会触发 但奇怪的是 仅适用于 android 本机浏览器 测试过 4 0 4 1 它适用于 iPhone iPad Ch
  • sencha touch2.0中如何在屏幕之间传递数据?

    我正在开发 sencha touch2 0 应用程序 我想将数据从一个屏幕发送到另一个屏幕 我知道这个问题已经被问过here但我发现它没有帮助 所以我在这里再次询问 我的应用程序中有一个复选框列表视图 我想要的是 当我单击一个或多个复选框并
  • 警告说“Id”存在并且应该被销毁

    大多数时候 当我多次单击同一按钮时 调用同一函数两次或更多次时 我会看到以下警告 WARN WARN Ext Component constructor Registering a component with a id name whic
  • Sencha Architect 3 不使用 app.css

    我正在尝试将自定义字体图标添加到我的 sencha Architect 项目中 并删除不必要的主题类 但似乎 Sencha Architect 根本不使用 app scss 位于我项目的 resources sass 文件夹中 我所做的更改
  • 在 Sencha Touch 2 中从商店加载轮播?

    有没有人有一个代码示例 可以从商店 在我的例子中是 JSON 商店 加载 Sencha Touch 2 Carousel 组件 我了解如何加载扩展 DataView 的列表 但 Carousel 似乎是一个更难解决的问题 因为它不扩展 Da
  • 在 Sencha Touch 2.2.1 中运行应用程序示例时出现 JavaScript 错误

    我开始在 Windows 8 上使用最新的 Sencha Touch 2 2 1 开发移动应用程序 我做了以下步骤http docs sencha com touch 2 2 1 guide getting started http doc
  • Sencha Touch 和 ExtJS

    Sencha Touch 看起来令人印象深刻 ExtJS 看起来也不错 我正在评估是否应该在即将推出的应用程序中使用 ExtJS 或 SproutCore 现在有了 Sencha Touch 我想知道是否选择 ExtJS 会更容易port
  • Sencha touch 2 - 如何创建动态轮播?

    Sencha Touch 2 如何在sencha touch 2中开发动态轮播 我想将商店中的每个元素显示为轮播中的单独卡片 鲁杜根以此作为答案 在我看来很好 http web archive org web 20121109164506
  • 从 tpl Sencha 传递参数

    我的json如下 status TRUE message Words data name paint author snooky word id 1 category Business definitions rating Green de
  • 为什么我应该使用 Ext.dispatch 而不是直接调用控制器代码?

    当在 Sencha Touch 中使用 相对较新的 MVC 位时 我发现 90 的调度调用看起来像这样 Ext dispatch controller customers action show record record 很好 我喜欢将流
  • 移动Web应用程序的服务器端架构

    在我开发过的大多数桌面 Web 应用程序中 您都需要一个服务器端 Web 框架 服务器端 Web 框架 Struts Spring MVC 等 具有某种用于处理请求的控制器 然后是用于生成动态内容的模板引擎 Velocity JSP 等 现
  • 为什么 Sencha Touch 中没有同步回调?

    我希望能够在商店同步成功完成后向用户显示一条消息 但是 似乎没有任何方法可以使用回调或同步调用它 我有点惊讶这不是开箱即用的 因为这一定是一个常见问题 有什么解决方法吗 我们花了很长时间才找到适当的解决方案 最后 我们向商店的写入事件添加了
  • 基于 HTML 5 的移动开发的最佳框架是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使 dataview.list 在 Sencha Touch 2 中可见?

    这里是 Sencha Touch 新手 也就是说 在过去一天左右的时间里 我一直在慢慢地思考这个问题 让我发疯的一件事是表单面板和列表由于某些奇怪的布局原因而没有显示 我不明白为什么 例如 我有以下搜索视图 Ext define NC vi
  • Sencha Touch 动画选项

    在哪里可以找到 Ext Panel show 的可用动画类型列表 我搜索了文档并用谷歌搜索了 sencha touchanimation options 但找不到任何东西 你可以在这里看到所有的动画 http dev sencha com
  • 我应该使用哪个移动开发开源框架? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我的公司想开发一个移动应用程序 Web 应用程序 本机应用程序还是混合应用程序 他们其实不知道 在这种情况下 他们要求我对移动开发的开源框架 跨
  • PhoneGap 1.4 封装 Sencha Touch 2.X - 性能怎么样?

    我正在构建一个多平台平板电脑应用程序 仅使用其 Webview 使用 Phonegap 1 4 对其进行包装 然后使用 Sencha Touch 2 框架发挥我的魔力 我所说的多平台是指 iOS 5 X 和 Android 3 0 目前 到
  • 未捕获的 InvalidValueError:setMap:不是 Map 的实例

    当我使用sencha touch2 2 1时 我遇到了一个问题 在查看器中 items id mapCanvas xtype map useCurrentLocation true 在控制器中 var map Ext getCmp mapC
  • Sencha Touch 2 中的动画尺寸

    我正在尝试对数据视图的高度进行动画处理 但它目前只是在视口周围滑动面板 而不是将其保持在适当的位置并更改其高度 代码如下 Ext Anim run el slide from height height to height newHeigh

随机推荐