Extjs6——用extjs6.0写一个简单页面

Posted 麦豇豆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Extjs6——用extjs6.0写一个简单页面相关的知识,希望对你有一定的参考价值。

本文基于ext-6.0.0

一、关于border布局

  在用ext做项目的过程中,最常用到的一种布局就是border布局,现在要写的这个简单页面也是运用border布局来做。border布局将页面分为五个部分,分别是north、south、west、east、center,对应着上、下、左、右、中,下面看一个简单的border布局的例子。

 

Ext.define(\'Learning.view.treelearn.trees\', {
    extend: \'Ext.panel.Panel\',
    xtype:\'trees-main\',
    referenceHolder: true,
    layout: \'border\',
    defaults:{
        collapsible: true,
        split: true
    },
    items: [
        {
            region :\'north\',
            bind: {
                html: \'上\'
            }
        },
        {
            region :\'south\',
            bind: {
                html: \'下\'
            }
        },
        {
            reference:\'treesLeft\',
            //xtype:\'treesLeft\',
            region :\'west\',
            width:200,
            bind: {
                html: \'左\'
            }
        },
        {
            region :\'east\',
            width:200,
            bind: {
                html: \'右\'
            }
        },
        {
            reference:\'treesCenter\',
            region :\'center\',
            bind: {
                html: \'中\'
            }
        },
    ]
});

 

二、写north部分(头部)

  上面这部分通常写系统名,用户名,也可以加注销按钮,搜索框等,这里就简单写个名字。

 1、在上面的trees.js基础上改一下,加入treesTop

       {
            reference:\'treesTop\',
            xtype:\'treesTop\',
            region :\'north\',
            collapsible: false,
            split: false,
            height:50
        },

  2、treesTop.js

Ext.define(\'Learning.view.treelearn.region.treesTop\', {
    extend: \'Ext.toolbar.Toolbar\',
    xtype:\'treesTop\',

    style:\'background-color:#35baf6;color:#fff;\',
    items:[
        {
            xtype:\'label\',
            bind:{
                text:\'Extjs Learning\'
            },
            style:\'font-size:20px;font-weight:bold;\'
        },\'->\',
        {
            xtype:\'label\',
            bind:{
                text:\'当前用户:\'+\'麦豇豆\',
            },
        },
    ]
    
});

 

 三、写west部分(左侧导航栏)

  下图一是导航栏完成效果,图二是目录结构(就是我这里用到的文件都放在哪了)

                

 

1、在上面的trees.js中改一下,加入treesLeft

     {
            reference:\'treesLeft\',
            xtype:\'treesLeft\',
            region :\'west\',
            width:220,
            bind: {
                html: \'左\'
            }
        },

2、写treesLeft.js,数据来自store

Ext.define(\'Learning.view.treelearn.region.treesLeft\', {
    extend: \'Ext.tree.Panel\',
    xtype:\'treesLeft\',

    title:\'导航菜单\',

    lines: false,
    rootVisible: false,

    store:Ext.create(\'Learning.store.treelearn.treesLeftStore\', {
        storeId: "treesLeftStoreId" 
    }),
});

3、treesLeftStore.js,模拟ajax,加载data.json中的数据

Ext.define(\'Learning.store.treelearn.treesLeftStore\', {
    extend:"Ext.data.TreeStore",
    alias: \'store.treesLeftStore\',

    proxy: {  
        type: \'ajax\',  
        url: \'app/data/data.json\'  
    },  
    root: {  
        expanded: true  
    },  
    autoLoad: true
});

4、data.json,一般后台传过来的就是json数据,这里写的内容不涉及到后端,所以就自己模拟数据了。(这里少写几条数据,就是展示下格式)

[
  {
    text: \'Panels\',
    id: \'panels\',
    expanded: true,
    children: [
      {
        id: \'basic-panels\',
        text: \'Basic Panel\',
        leaf: true
      },
      {
        id: \'framed-panels\',
        text: \'Framed Panel\',
        leaf: true
      }
    ]
  },
  {
    text: \'Trees\',
    id: \'trees\',
    expanded: true,
    children: [
      {
        id: \'basic-trees\',
        text: \'Basic Trees\',
        leaf: true
      },
      {
        id: \'tree-reorder\',
        text: \'Tree Reorder\',
        leaf: true
      }
    ]
  },
]

 

 -----------------------到这里侧边栏的样子就出来了----------------------------------------

但是只是样子货,能看不能用,下一篇写怎么让它可以跳转页面。Extjs6(四)——侧边栏导航根据路由跳转页面

 

 

以上是关于Extjs6——用extjs6.0写一个简单页面的主要内容,如果未能解决你的问题,请参考以下文章

extjs6入门:用sencha cmd搭建简单的extjs6项目

ExtJs6.0.0随笔

extjs6.0数据表格(带复选框)

关于Extjs6.0 controller文件过大,实现模块化分离

extjs6.0 treepanel设置展开和设置选中

ExtJS 6.0.2 使用 hbox 布局创建具有两个嵌套面板的面板