sencha如何在tabpanel中动态添加标签,并将列表添加到tabpanel

我想建立一个动态的框架。首先,在“标签”中添加“ loanname”作为我的标题,以添加到标签面板。其次,动态添加我的产品,该产品的借贷名称衡量选项卡标题的借贷名称。

json中的借贷名称是我想成为每个选项卡上的标题的标题:

{
"listjson" : [
    {"loanname" : "xixi22" , "loandesc" : "use to architecture"},
    {"loanname" : "xixi2" , "loandesc" : "use to education"},
    {"loanname" : "xixi3" , "loandesc" : "use to plane and others"}
]
}

和我想要放入列表中的产品(列表中包含相同的借贷产品),然后将列表放入匹配标签:

{
"products" :[
    {"loanname": "xixi22", "loannum": "A-0000001", "interests": "6.5", "timeline": "1 year"},
    {"loanname": "xixi22", "loannum": "A-0000002", "interests": "7", "timeline": "2 year"},
    {"loanname": "xixi2", "loannum": "B-0000001", "interests": "9", "timeline": "3 year"},
    {"loanname": "xixi3", "loannum": "C-0000001", "interests": "11.5", "timeline": "4 year"}
]
}

我想要的结果视图与下图类似:但我遇到问题,列表包含标题中与借贷名称不匹配的其他产品,并显示为null

在此处输入图片说明

-------------编辑零件---------我的零件代码如下:

        {
            xtype: 'tabpanel',
            itemId: 'tabfirst',
            flex: 1,
            //activeItem: 1,
            tabBar: {
                layout: {
                    pack: 'center'
                }
            },
            defaultType: 'tablist'
        }

列表视图:

Ext.define('ylp2p.view.tablist',{
extend: 'Ext.dataview.List',
xtype: 'tablist',
config: {
    title: '',
    store: 'productstore',
    itemTpl: '{loanname}'
}
});

我在控制器中的代码:

Ext.define('ylp2p.controller.addtab',{
extend: 'Ext.app.Controller',

config: {
    refs: {
        myTabPanel: '.makemoney #tabfirst',
    },
    controller: {
        myTabPanel: {
            activate: 'OnActivateTabPanel',
            activateitemchange: 'OnActivateItemChangeTabPanel'
        }
    }
},
launch: function(){
    var products = Ext.getStore('productstore');

    products.filterBy(function(record, id){
       return record.get('loanname') === 'xixi22';
    });
},

OnActiveTabPanel: function(newActiveItem, viewport, oldActiveItem, eOpts){
    var tabs = Ext.getStore('loanliststore');

    tabs.each(function(record){
        newActiveItem.add({
            title: record.get('loanname')
        });
    });
},

OnActiveItemChangeTabPanel: function(cmp, value, oldValue, eOpts){
    var products = value.getStore();

    products.clearFilter(true);
    products.filterBy(function(record, id) {
        return record.get('loanname') === value.getTitle();
    });
}

});

我的商店:1.tab商店loanlist.js,2.product商店prostore.js

Ext.define('ylp2p.store.loanlist',{
extend: 'Ext.data.Store',
config:{
    model: 'ylp2p.model.list',
    storeId: 'loanliststore',
    autoload: true,
    proxy: {
        type: 'ajax',
        url: 'resources/json/loanlist.json',
        reader:{
            type: 'json',
            rootProperty: 'listjson'
        }
    }
}
});

Ext.define('ylp2p.store.prostore',{
extend: 'Ext.data.Store',
config: {
    model: 'ylp2p.model.loanproduct',
    storeId: 'productstore',
    autoload: true,
    proxy: {
        type: 'ajax',
        url: 'resources/json/product.json',
        reader: {
            type: 'json',
            rootProperty: 'products'
        }
    }
}
});

app.js:

Ext.application({
name: 'ylp2p',

requires: [
    'Ext.MessageBox'
],

views: [
    'ylp2p.view.Main',
    'ylp2p.view.makemoney',
    'ylp2p.view.tablist'
],

stores: [
    'ylp2p.store.datainterests',
    'ylp2p.store.loanlist',
    'ylp2p.store.picstore',
    'ylp2p.store.prostore'
],

models: [
    'ylp2p.model.data',
    'ylp2p.model.list',
    'ylp2p.model.picmodel',
    'ylp2p.model.loanproduct'
],

controllers: [
    'ylp2p.controller.viewdata',
    'ylp2p.controller.viewlist',
    'ylp2p.controller.loadpic',
    'ylp2p.controller.addtab'
],

icon: {
    '57': 'resources/icons/Icon.png',
    '72': 'resources/icons/Icon~ipad.png',
    '114': 'resources/icons/[email protected]',
    '144': 'resources/icons/[email protected]'
},

isIconPrecomposed: true,

startupImage: {
    '320x460': 'resources/startup/320x460.jpg',
    '640x920': 'resources/startup/640x920.png',
    '768x1004': 'resources/startup/768x1004.png',
    '748x1024': 'resources/startup/748x1024.png',
    '1536x2008': 'resources/startup/1536x2008.png',
    '1496x2048': 'resources/startup/1496x2048.png'
},

launch: function() {
    // Destroy the #appLoadingIndicator element
    Ext.fly('appLoadingIndicator').destroy();

    // Initialize the main view
    Ext.Viewport.add(Ext.create('ylp2p.view.Main'));
    Ext.getStore('interestsdata').load();
    Ext.getStore('loanliststore').load();
    Ext.getStore('imagestore').load();
    Ext.getStore('productstore').load();
    console.log('start Big weapon!!here is app.js launch function');       

onUpdated: function() {
    Ext.Msg.confirm(
        "Application Update",
        "This application has just successfully been updated to the latest version. Reload now?",
        function(buttonId) {
            if (buttonId === 'yes') {
                window.location.reload();
            }
        }
    );
}
});
塔拉巴斯

在activeitemchange侦听器中,您可以根据标签的标题(activeitem)过滤商店。我迅速为您制作了一个小提琴,向您展示了我将如何做:

https://fiddle.sencha.com/#fiddle/u50

var tabs = Ext.create('Ext.data.Store', {
    fields: ['loanname', 'loandesc'],
    data: [
        {"loanname" : "xixi22" , "loandesc" : "use to architecture"},
        {"loanname" : "xixi2" , "loandesc" : "use to education"},
        {"loanname" : "xixi3" , "loandesc" : "use to plane and others"}
    ]
})

var products = Ext.create('Ext.data.Store', {
    fields: ['loanname','loannum','interests','timeline'],
    data: [
        {"loanname": "xixi22", "loannum": "A-0000001", "interests": "6.5", "timeline": "1 year"},
        {"loanname": "xixi22", "loannum": "A-0000002", "interests": "7", "timeline": "2 year"},
        {"loanname": "xixi2", "loannum": "B-0000001", "interests": "9", "timeline": "3 year"},
        {"loanname": "xixi3", "loannum": "C-0000001", "interests": "11.5", "timeline": "4 year"}
    ]
});

Ext.define('Fiddle.view.MyList', {
    extend: 'Ext.dataview.List',
    xtype: 'mylist',

    config: {
        title: '', // We have to config a title to let the framework generate getters and setters
        store: products,
        itemTpl: '{loannum}'
    }
});

Ext.application({
    name : 'Fiddle',


    launch : function() {
        var tabPanel = Ext.create('Ext.TabPanel', {
            fullscreen: true,
            defaultType: 'mylist',
            items: [],
            listeners: {
                activate: function( newActiveItem, viewport, oldActiveItem, eOpts) {
                    products.filterBy(function(record, id) {
                        return record.get('loanname') === 'xixi22';
                    });
                },
                activeitemchange: function( cmp, value, oldValue, eOpts ) {
                    products.clearFilter(true);
                    products.filterBy(function(record, id) {
                        return record.get('loanname') === value.getTitle();
                    });
                }
            }
        });

        tabs.each(function(record){
            tabPanel.add({
                title: record.get('loanname'),
                iconCls: 'home',
            });
        });
    }
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

R Shiny-动态将tabPanel添加到tabsetPanel(使用renderUI)

来自分类Dev

将标签添加到MVC上的TabPanel中

来自分类Dev

在uiview中动态添加标签,然后将uiview添加到scrollview ios

来自分类Dev

如何在PySide中添加标签

来自分类Dev

在extjs中将项目添加到tabPanel的tabBar

来自分类Dev

如何在组合框和列表的选项中添加标签?

来自分类Dev

如何在div中添加标签

来自分类Dev

如何在Github提交中添加标签?

来自分类Dev

如何在bokeh中的点上添加标签?

来自分类Dev

如何在每行上添加标签并将第二个y轴添加到“ loglog”图的右侧?

来自分类Dev

如何在CAShapeLayer中添加标签或文本

来自分类Dev

如何在python中将元素添加到列表中?

来自分类Dev

动态添加到列表中

来自分类Dev

如何在字典中将元素添加到列表中?

来自分类Dev

如何在JAVAFX中创建“添加标签”按钮?

来自分类Dev

如何在C#中迭代JSON并将每个对象添加到列表中?

来自分类Dev

如何在js数组中添加标签?

来自分类Dev

在QML中动态添加标签

来自分类Dev

如何在networkx的图形中的节点上添加标签?

来自分类Dev

如何在FactoryGirl Topic对象中添加标签?

来自分类Dev

在uiview中动态添加标签,然后将uiview添加到scrollview ios

来自分类Dev

如何在div中添加标签

来自分类Dev

如何在片段交易中添加标签?

来自分类Dev

sencha将列表添加到面板,然后将面板添加到我的tabpanel.in控制器中

来自分类Dev

动态创建对象并将其添加到列表JavaFX

来自分类Dev

将背景图像添加到Shiny中的特定tabPanel

来自分类Dev

如何在 Microsoft Word 中添加标签词?

来自分类Dev

如何在rails的时区下拉列表中添加标签

来自分类Dev

如何将 xtype 作为项目添加到 Extjs tabpanel 中动态创建的选项卡

Related 相关文章

  1. 1

    R Shiny-动态将tabPanel添加到tabsetPanel(使用renderUI)

  2. 2

    将标签添加到MVC上的TabPanel中

  3. 3

    在uiview中动态添加标签,然后将uiview添加到scrollview ios

  4. 4

    如何在PySide中添加标签

  5. 5

    在extjs中将项目添加到tabPanel的tabBar

  6. 6

    如何在组合框和列表的选项中添加标签?

  7. 7

    如何在div中添加标签

  8. 8

    如何在Github提交中添加标签?

  9. 9

    如何在bokeh中的点上添加标签?

  10. 10

    如何在每行上添加标签并将第二个y轴添加到“ loglog”图的右侧?

  11. 11

    如何在CAShapeLayer中添加标签或文本

  12. 12

    如何在python中将元素添加到列表中?

  13. 13

    动态添加到列表中

  14. 14

    如何在字典中将元素添加到列表中?

  15. 15

    如何在JAVAFX中创建“添加标签”按钮?

  16. 16

    如何在C#中迭代JSON并将每个对象添加到列表中?

  17. 17

    如何在js数组中添加标签?

  18. 18

    在QML中动态添加标签

  19. 19

    如何在networkx的图形中的节点上添加标签?

  20. 20

    如何在FactoryGirl Topic对象中添加标签?

  21. 21

    在uiview中动态添加标签,然后将uiview添加到scrollview ios

  22. 22

    如何在div中添加标签

  23. 23

    如何在片段交易中添加标签?

  24. 24

    sencha将列表添加到面板,然后将面板添加到我的tabpanel.in控制器中

  25. 25

    动态创建对象并将其添加到列表JavaFX

  26. 26

    将背景图像添加到Shiny中的特定tabPanel

  27. 27

    如何在 Microsoft Word 中添加标签词?

  28. 28

    如何在rails的时区下拉列表中添加标签

  29. 29

    如何将 xtype 作为项目添加到 Extjs tabpanel 中动态创建的选项卡

热门标签

归档