1

我正在尝试根据列表中的录音项目添加不同的详细信息视图。

  • 我有使用列表组件的主屏幕,此视图显示 ['Real Estate', 'Vehicles', 'Jobs']... 作为菜单项。
  • 根据列表中的选定项目,我想显示不同的视图。
    • 我想遵循 MVC 设计模式..

这是一些代码... App.js

Ext.application({
name: 'App',

controllers: ['Main'],
views: ['Viewport', 'HomePage'],
stores: ['HomePageItems'],
models: ['HomePageItem'],

launch: function () {
    Ext.Viewport.add(Ext.create('App.view.Viewport'));
}

});

视口.js

Ext.define("App.view.Viewport", {
extend: 'Ext.navigation.View',

requires: [ 'App.view.realestate.Realestate',
            'App.view.HomePage',
            'App.view.jobs.Jobs',
            'App.view.other.Other',
            'App.view.vehicles.Vehicles'
           ],

config: {
    items: [
        {
            xtype: 'homepage'
        }
    ]
}

});

HomePage.js ( xtype = "主页" )

Ext.define('App.view.HomePage', {
extend: 'Ext.List',
xtype: 'homepage',
id: 'homepage',

config: {
    title: 'Oglasi',
    itemTpl: '<strong>{name}</strong><p style="color:gray; font-size:8pt">{description}</p>',
    store: 'HomePageItems',
    onItemDisclosure: true
}

});

主.js

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

config: {
    refs: {
        main: '#homepage'
    },

    control: {
        'homepage': {
            disclose: 'HookUpDetailView'
        }
    }
},

HookUpDetailView: function (element, record, target, index, ev) {
    // TO DO: I have 4 differente views to load programmaticaly based on selected item in List
    //'App.view.realestate.Realestate'
    //'App.view.jobs.Jobs'
    //'App.view.other.Other'
    //'App.view.vehicles.Vehicles'
}

});

我找到了一个例子,但它对我不起作用(推送方法不存在)

this.getMain().push({
        xtype: 'realestatehome'
    });

预先感谢!

4

3 回答 3

1

您正在寻找的方法是

http://docs.sencha.com/touch/2-0/#!/api/Ext.Container-method-add

this.getMain().add({xtype: 'realestatehome'});

但是你所拥有的没有意义,realestatehome 是一个列表,你不能在它下面添加一个组件。您需要阅读有关布局的信息来自上面的链接

于 2012-05-16T05:33:38.910 回答
0

推应该工作。你可以试试这样的。

  HookUpDetailView: function (list, record) {

           if(record.data.description==='real estate'){

                  this.getRealEstate().push({
                      xtype: 'realestatehome',
                      title: record.data.description,
                      data.  record.data

           });

           if(record.data.description==='Vehicles'){

                  this.getVehicles().push({
                      xtype: 'vehicles',
                      title: record.data.description,
                      data.  record.data

           });


     }
}

一个特定的视图可能看起来像

Ext.define('App.view.RealEstateHome', {
    extend: 'Ext.Panel',
    xtype: 'realestatehome',
    config: {
        styleHtmlContent: true,
        scrollable: 'vertical',
        tpl: [
            '{description}, {example}, {example}, {example}'
        ]
    }
});

访问您的特定视图的参考应该看起来像

refs: {
        realEstate: 'realestatehome',
        vehicles:   'vehicleshome'
    },

希望有帮助

于 2012-05-16T05:22:47.273 回答
0

我在控制器 this.getMain() get main 中犯了一个错误,它正在返回 Ext.List,我需要具有“push”方法的 Ext.navigation.View。

所以......我在我的视口(“容器”)中添加了 xtype 和 id 并且我的控制器中的快速更改解决了我的麻烦......

refs: {
    main: '#homepage',
    container: '#container'
}

而不是获取 Ext.List 对象

this.getContainer().push({
    xtype: 'realestatehome'
});

而这项工作就像一个魅力:)

于 2012-05-31T11:46:58.423 回答