0

我想用一个按钮切换视图,在 sencha 文档中绝对没有在 MVC 上下文中的示例,尽管他们建议开发人员使用他们在 MVC 架构中构建的内容。我猜是因为 Touch 2.0 相当新。

http://docs.sencha.com/touch/2-0/#!/api

关于list组件的视频也是关于navigation.View的,但是由于使用了list组件,所以没有展示如何用按钮切换视图。

视频:列表组件介绍

这是我到目前为止的代码:

uddannelser.js(第一个视图)

Ext.define("VUCFyn.view.uddannelser", {
extend: "Ext.navigation.View",
xtype: "uddannelser",
requires: [
    "VUCFyn.view.avu"
],

config: {
    title: "Uddannelser",
    cls: "uddannelser",
    items: [
        {
            title: "Uddannelser",
            xtype: "container",
            margin: 20,
            layout: "vbox",
            items: [
                {
                    xtype: "button",
                    text: "AVU",
                    width: 100
                }
            ]
        }
    ]
}});

avu.js(uddannelser 的子视图)

Ext.define("VUCFyn.view.avu", {
extend: "Ext.Panel",
xtype: "avu",

config: {
    title: "AVU",
    cls: "avu",
    scrollable: true,
    items: [
        {
            xtype: "label",
            html: [
                "<p>Almen Voksenuddannelse - avu - er et tilbud om uddannelse til alle over 18 år. Du kan tage avu-fagene et ad gangen eller i en kombination med flere fag. Du kan også kombinere avu-fagene med andre enkeltfag på FVU og/eller hf.</p>",
                "<h5>AVU omfatter kernefagene:</h5>",
            ].join("")
        }
    ]
}});

Main.js(控制器)

Ext.define('VUCFyn.controller.Main', {
extend: 'Ext.app.Controller',

config: {
    refs: {
        uddannelser: "uddannelser"
    },
    control: {
        "uddannelser": {
            tap: "showDetail"
        }
    }
},

showDetail: function () {
    this.getUddannelser().push({
        xtype: "avu"
    });
},

init: function () {

}});

请,如果有人可以根据上面的代码(或类似代码)告诉我怎么做,那就太好了。

顺便说一句:此线程中的答案:Sencha Touch 2 MVC - 如何使用按钮切换视图对我不起作用。(虽然没有错误)我认为它适用于 Sencha Touch 1.1,很多事情在 2.0 中显然发生了变化

4

2 回答 2

0

嗨,我认为您只需要修复控制器即可,它会起作用,请尝试以下操作,让我知道您的情况。

config: {
refs: {
    uddannelser: "uddannelser",
    uddannelserButton: "uddanelser button"
},
control: {
    "uddannelserButton": {
        tap: "showDetail"
    }
}

},

所以我所做的就是在您的 uddanelser 视图中为按钮添加一个选择器,并将点击侦听器附加到该按钮上。祝你好运!

于 2013-02-18T16:28:52.660 回答
0

您是否尝试在navigationview您给 uddannelser 的设备上收听点击事件cls?您的设置有几个问题;

首先,您似乎没有在控制器中正确使用组件查询,请查看此文档:http ://docs.sencha.com/touch/2.4/apidocs/#!/api/Ext.ComponentQuery

根据您希望控制器管理视图中这些组件的数量,您可以给它一个 id 并搜索组件,"#id"或者您可以使用xtype和配置选项,例如"navigationview[cls=uddannelser]".

其次,您不能在 a 上侦听点击事件navigationview,如果您想在此组件上侦听点击事件,则必须在该组件上侦听点击事件element并转发事件。我怀疑您实际上是在尝试侦听 tap 事件button,在这种情况下,在您的控制器中创建两个 ref,一个用于 the navigationview,一个用于button,侦听 the 上的 tap 事件并像您一样button按下面板navigationview现在。

于 2014-10-26T22:55:20.480 回答