ListItem 的 items 属性上的 XTemplate 定义

Posted

技术标签:

【中文标题】ListItem 的 items 属性上的 XTemplate 定义【英文标题】:XTemplate definition on items property of a ListItem 【发布时间】:2015-09-30 08:56:59 【问题描述】:

我正在使用 Sencha 2.3.0,我希望 XTemplate 与 ListItem 上的组件(文本字段)并排放置。上面的代码适用于 DataView/DataItem,但我想使用仅在 List/ListItem 上可用的分组属性。

嵌套的 Xtemplate 可以很好地呈现为 DataItem。我怎样才能使它适用于 ListItem?我也接受删除这种嵌套结构并直接在 ListItem 上使用 xtemplate 作为 tpl 属性的解决方案(当然也必须实现带有侦听器的文本字段)。

列表

Ext.define( 'app.view.myList', 
    //extend: 'Ext.dataview.DataView',
    extend: 'Ext.dataview.List',

    xtype: 'mylist',

    requires: [
        'app.view.MyItem'
    ],

    config: 
        title: "myTitle",
        cls: 'mylist',
        defaultType: 'myitem',
        grouped: true,
        store: 'myStore',
        useComponents: true,
        itemCls: 'myitem',

        items: [
            
                // some components
            
        ]
    
);

列表项

Ext.define( 'app.view.myItem', 

    //extend: 'Ext.dataview.component.DataItem',
    extend: 'Ext.dataview.component.ListItem',
    xtype: 'myitem',

    config: 
        cls: 'myitem',

        items: [
            
                xtype: 'component',
                tpl: new Ext.XTemplate([
                        '<table cellpadding="0" cellspacing="0" class="myitemXTemplate">',
                            //some xtemplate content
                        '</table>'
                    ].join( "" ),
                    
                        compiled: true
                    )
            ,

            
                label: 'some label',
                cls : 'myitemtextfield',
                xtype: 'textfield',
                name: 'myitemtextfield'
             
        ]
    
);

提前致谢!

【问题讨论】:

【参考方案1】:

修改/touch-2.4.2/examples/list/index.html

型号:

Ext.define('model1', 
    extend: 'Ext.data.Model',
    config: 
        fields: [
            name: 'firstName', type: 'string',
            name: 'lastName', type: 'string'
        ]
    
);

自定义列表项

Ext.define('DataItem', 
extend: 'Ext.dataview.component.ListItem',
        xtype: 'basic-dataitem',
        requires: [
                'Ext.Button',
                'Ext.Component',
                'Ext.layout.HBox',
                'Ext.field.Checkbox'
        ],
        config: 
        dataMap : 
       /* getFirstname : 
         setData : 'firstName'

         ,*/
        getLastname : 
        setValue : 'lastName'
        
        ,
                layout: 
                type: 'hbox',
                        height:'200px',
                ,
                firstname: 
                cls: 'firstname',
                        xtype:'component',
                        data:data:'hej',
                        tpl: new Ext.XTemplate([
                                '<H1>',
                                'data',
                                '</H1>'
                        ].join(""),
                        
                        compiled: true
                        )

                ,
                lastname: 
                xtype:'textfield',
                css:'lastname'



                

        ,
        applyFirstname : function (config) 
            return Ext.factory(config, Ext.Component, this.getFirstname());
        ,
        updateFirstname : function (newName) 
            if (newName) 
                this.add(newName);
            
        ,
        applyLastname : function (config) 
            return Ext.factory(config, Ext.Component, this.getLastname());
        ,
        updateLastname : function (newAge) 
            if (newAge) 
                this.add(newAge);
            
        ,
        applyFirstName: function (config) 
            return Ext.factory(config, 'Ext.Component', this.getLastname());
        ,
        updateRecord: function(record)      
        if (!record) 
            return;
        


        this.getFirstname().setData(data:record.get("firstName"));
        this.callParent(arguments);

    
        );

商店

var store = Ext.create('Ext.data.Store', 
        //give the store some fields
        model: 'model1',
        //filter the data using the firstName field
        sorters: 'firstName',
        //autoload the data from the server
        autoLoad: true,
        //setup the grouping functionality to group by the first letter of the firstName field
        grouper: 
            groupFn: function (record) 
                return record.get('firstName')[0];
            
        ,
        //setup the proxy for the store to use an ajax proxy and give it a url to load
        //the local contacts.json file
        proxy: 
            type: 'ajax',
            url: 'contacts.json'
        
    );

名单

 xtype: 'list',
            useSimpleItems: false,
            defaultType: 'basic-dataitem',
            id: 'list',
            ui: 'round',     
            //bind the store to this list
            store: store

【讨论】:

感谢您的代码-那里没有太多解释;)尝试像您的示例中那样做-有点困难。它适用于文本字段组件,但不会呈现 ListItem 上的 XTemplate。

以上是关于ListItem 的 items 属性上的 XTemplate 定义的主要内容,如果未能解决你的问题,请参考以下文章

如何隐藏 MUI React ListItem?

Xul 的 listitem 命令属性不起作用?

webform中DropdownList绑定多个字段

在C#.net中有DropDownList 其中某一行设置为不能被选择怎么设置 知道是设置ListItem的Enabled求具体代码

将用户导航到 listitem 上的新屏幕单击 React native

错题解析