0

1)我有一个想要显示在视图中的 json 文件。

{           
    "contents": [
                {
                    "title":'JWorld',
                    "image":'image/e-learning/elearning.png',

                    "subtitle":[
                    {
                        "categories":'Aus',
                    },
                    {
                        "categories":'England',
                    }                
                    ]
                },
                {
                    "title":'JIndia',
                    "image":'image/Content/History_of_India.jpg',
                    "subtitle":[
                    {
                        "categories":'History',
                    },
                    {
                        "categories":'India palace',
                    }                
                    ]
                },
                {
                    "title":'JMaharastra',
                    "image":'image/Content/Geography.jpg',
                    "subtitle":[
                    {
                        "categories":'History Maharastra',
                    },
                    {
                        "categories":'Maharastra Heros',
                    }                
                    ]
                }
              ]
}

2)我的视图文件:--

Ext.define('Balaee.view.kp.dnycontentcategories.ContentcategoriesView',
{
    extend:'Ext.view.View',
    id:'contentcategoriesViewId',
    alias:'widget.ContentcategoriesView',
    store:'kp.DnycontentcategoriesStore',
    config:
    {
        tpl:'<tpl for="0">'+
                '<div class="main">'+
                '</br>'+
                '<b>{title}</b></br>'+
                '<img src={image} hight="50" width="100"></br>'+
                '</div>'+
                '</tpl>',
        itemSelector:'div.main',
    }
});// End of class

3)我正在使用选项卡面板并使用 json 文件在其中动态添加选项卡。

Ext.define('Balaee.view.kp.dnycontentcategories.Contentcategories',{
    extend:'Ext.tab.Panel',
    requires:[
              'Balaee.view.kp.dnycontentcategories.ContentcategoriesView','Balaee.view.kp.dnycontentcategories.ContentcategoriesView1'
             ],
    id:'contentcategoriesId',
    alias:'widget.Contentcategories',
    height:500,
    items:[

    ],//end of items square
});// End of login class

4)我的商店文件:--

Ext.define('Balaee.store.kp.DnycontentcategoriesStore',{
    extend: 'Ext.data.Store',
    model: 'Balaee.model.kp.DnycontentcategoriesModel',
    autoLoad:true,
//    filters: [{
//        property: 'title',
//    }],
    proxy:
    {
        type:'ajax',
        api:
        {
            read:'data/content.json',
            //create: ,
            //update: ,
            //destroy: ,
        },//End of api 
        reader:
        {
            type:'json',
            root:'contents',
            //successProperty: ,
        }//End of reader
    }//End of proxy
});//End 

5)我的控制器文件一些代码在这里我从json文件中动态添加一些选项卡。并选择特定的选项卡我想要从json文件中获得不同的特定值。但我对第一个选项卡有相同的看法。我怎么解决这个问题。

init: function(){
    console.log("inside content controller");
    this.control({
        'Contentcategories':
        {
            render:this.renderFunction,
        }
    });//End of control
},//End of init() function
renderFunction:function(){
    console.log("Inside render function");
    var tabPanel = Ext.getCmp('contentcategoriesId');       // tabpanel  
    var tabPanelView = Ext.getCmp('contentcategoriesViewId');   // tabpanel view

    var storeObject= this.getStore('kp.DnycontentcategoriesStore'); // store
    storeObject.on('load',function(){
        storeObject.each(function(model){
            //tabPanelView.store().filter('title',model.get('title')),
            console.log(model.get('title'));
            console.log(model.get('categories'));
            tabPanel.add({title:model.get('title'),
                            id:model.get('title'),
                            //html:"<image src=model.get('image')>",
                            xtype:'ContentcategoriesView',              
                        }); //End of add function 
        });// End of storeObject function
        tabPanel.setActiveTab(0);
    });
},// End of render function 

请给我一些建议。

4

1 回答 1

0

您的代码存在一些问题。

您定义ContentcategoriesView- 它是您扩展的组件;但是您给它一个 id ( contentcategoriesId) 但您正在创建多个这些组件 - 这是没有意义的,因为每个组件实例的 id 必须是唯一的。

然后,您将商店附加到此视图,这意味着所有组件都将呈现相同的内容。

如果我理解正确,您希望 json 中的每个条目都成为不同的选项卡。

我会采取这个方向(代码未经测试,但应该给你一个方向):

Ext.define('Balaee.view.kp.dnycontentcategories.ContentcategoriesView',
{
    extend:'Ext.panel.Panel', // Notice it's a panel.
    alias:'widget.ContentcategoriesView',

    config:
    {
        tpl: '<div class="main">' +
             '</br>' +
             '<b>{title}</b></br>' +
             '<img src={image} hight="50" width="100"></br>' +
             '</div>'
        itemSelector:'div.main',
    }
});

接着:

storeObject.on( 'load',function() {
    storeObject.each( function( model ) {
        tabPanel.add({
            xtype: 'ContentcategoriesView',
            title: model.get( 'title' ),
            id:    model.get( 'title' ),
            data:  model
        }); 
    });
    tabPanel.setActiveTab(0);
});
于 2013-01-09T15:56:21.587 回答