如何根据htm事件在Sencha Touch中切换视图?

时间:2012-11-30 08:54:03

标签: html extjs sencha-touch sencha-touch-2 uiswitch

我想根据html事件切换视图:通常点击映射图像。

我走了这个post。它解释了如何通过在html元素上添加一个监听器来获取href值。我已经成功地完成了这一步。

下一步是切换到正确的视图。通常,如果href =“item1”,那么我想切换到查看“item1”...我真的不知道如何执行此操作。

我视图中的html元素代码:

<img class="map" src="folder/name_pic.jpg" ...usemap='#MapName' />
    <map name='#MapName' ...>
        <area shape=...... href="view1" />
        <area shape=...... href="view2" />
        <area shape=...... href="view3" />
    </map>

父标签面板中的代码:

panel.getEl().on({
    tap: function(e){

        var href = Ext.fly(e.getTarget(
                    'img.map')).getAttribute('href');

        // What goes HERE?
        // if (href == 'view1')
        //     display 'view1'...
},
delegate: 'img.map'
});

2 个答案:

答案 0 :(得分:1)

您可以使用下面显示的示例代码执行此操作,您可能需要针对您的应用程序设计对其进行修改,但这是一般方法

Tapped: function() {
        // When the user taps on this item, create a new reference new viw, 
        // and set  it as the active item

        Ext.Viewport.setActiveItem(Ext.create('Your new view Goes here'));
    }

由于

答案 1 :(得分:1)

我在控制器中使用“路线”解决方案成功实现了我的目标。

首先我将我的映射图片定义如下:

<img class="map" src="folder/name_pic.jpg" ...usemap='#MapName' />
     <map name='#MapName' ...>
         <area shape=...... href="/#view1" />
         <area shape=...... href="/#view2" />
         <area shape=...... href="/#view3" />
     </map>

然后在Controller.js中:

config: {
    routes: {
        'view1': 'showView1',
        'view2': 'showView2',
        'view3': 'showView3'
    },
[...... code here...]

showView1: function() {

    this.getMainPanel().add({
        xtype: 'view1'
    });
},
showView2: function() {

    this.getMainPanel().add({
        xtype: 'view2'
    });
},

虽然有效但对我来说似乎不是最佳选择。我会继续努力!