开源进销存PSI - ExtJS知识点(1)

引言

这一系列的博客源于PSI的QQ群中有同学抱怨JS代码中没有注释,于是我就决定动手增加注释。同时我也在想:很多关于ExtJS的疑问是和不太熟悉ExtJS的基础知识点相关的,所以我就决定动手写这一系列的博客。

注意:这些知识点仅仅局限于PSI代码中应用到了的,并不是ExtJS开发大全。



Ext.define

这个是我认为在ExtJS所有的知识点中最重要的,原因是几乎每个PSI的JS代码中它必出现。

通俗地讲,Ext.define就是定义一个新的class。因为JS本身没有class这个原生的类型,所以ExtJS内部模拟出了class体系,主要就是实现从一个class继承从而生成新的class。


Ext.define("PSI.App", {
    config: {
        userName: ""
    },
    // 下面的代码省略

config这个用法很特别,会让人有些疑惑。

1、在config里面的属性会自动生成一个get方法,例如上面的 userName,就会生成一个getUserName()方法。

下面是调用的例子:

// var me = this;

["当前用户:<span style=‘color:red‘>" + me.getUserName() + "</span>"]

2、config对应的用法是在创建这个class的时候,可以作为额外的参数传递给这个class,例如:

var app = Ext.create("PSI.App", {
            userName: "{$loginUserName}"
        });

特别注意的是需要用Ext.create方法来创建class,不能用new



上面的class,是需要通过create方法创建出实例来使用。Ext.defin也可以定义静态方法。

Ext.define("PSI.MsgBox", {
    statics: {
        showInfo: function (info, func) {
            Ext.Msg.show({
                title: "提示",
                msg: info,
                icon: Ext.Msg.INFO,
                buttons: Ext.Msg.OK,
                modal: true,
                fn: function () {
                    if (func) {
                        func();
                    }
                }
            });
        },
    // 下面的代码略

通过statics就能定义出静态方法。上面定义的静态方法的调用例子是:

PSI.MsgBox.showInfo("请选择要编辑的组织机构");

调用静态方法,不需要用Ext.create



通过extend来实现从一个已有的class继承,例如:

Ext.define("PSI.Inventory.InitInventoryEditForm", {
    extend: "Ext.window.Window",
    //下面的代码略

这就定义了一个class:PSI.Inventory.InitInventoryEditForm,其父类是 Ext.window.Window

时间: 2024-10-23 12:58:17

开源进销存PSI - ExtJS知识点(1)的相关文章

开源进销存PSI - ExtJS知识点(3)

Ext.create 与 new 因为PSI是用ExtJS 4.2开发的,所以这个知识点是针对这个版本而言的. 在JS中创建对象,肯定只有用new,所以Ext.create最终必然要使用new,只是为了构建其内部的数据结构,又附加了很多的代码. 重要的事情说三遍:用Ext.create创建对象 .用Ext.create创建对象 .用Ext.create创建对象. 在ExtJS中,可以忘记new! Ext.define("PSI.Customer.CustomerField", {   

开源进销存PSI - ExtJS知识点(2)

先看代码 Ext.define("PSI.Sale.WSMainForm", {     extend: "Ext.panel.Panel",     border: 0,     layout: "border",     initComponent: function () {         var me = this;         //下面的代码略 1.上面的代码的主要含义是定义了一个新的class:PSI.Sale.WSMainFo

开源进销存PSI - 技术文档目录

开源进销存PSI技术文档目录 1.本地环境搭建 2.总体技术架构 PSI概要设计文档在这里

开源进销存PSI - 为什么又要用Java重写一个版本?

看这篇文章之前,最好先看看这个: http://my.oschina.net/u/134395/blog/382447 1.PSI 目前是用PHP写的,但是我决定还要再弄个Java版本! 2.原因之一: Just for fun !  (向 Linus Torvalds 致敬!) 3.如果只是简单地把PHP代码翻译成Java代码,那么这个 fun就不够爽,所以呢:Java版有其独特的规划. 概要地讲,PSI Java版的目标是:集团版的进销存系统. PHP版本的PSI,目前还只能给单店使用,遇到

开源进销存PSI - 为什么要开发安卓app

PSI为什么要开发安卓app而不用H5? 1.如果用手机或者其他移动设备访问:http://psi.oschina.mopaas.com ,就能看到H5页面. 2.在PSI中H5方式主要用来做报表展现和以后嵌入到微信中. 3.有一种设备叫:智能手持终端,见下图(图片版权归百度百科) 目前很多这种设备,是基于WinCE的,但是越来越多的类似设备是基于安卓的了. 4.还有一个例子:收银POS机,基于安卓系统的也越来越多. 5.概括说原因就是:越来越多的外部设备是基于安卓系统的,而在进销存业务中会用到

开源进销存PSI - 关于PSI开源协议的一些说明

经常有用户对PSI的开源协议产生疑惑,这篇文章就集中讲讲这方面的话题. 1.PSI是双开源协议:GPL V3和Apache License V2. 2.之所以是双协议,很大的因素是因为ExtJS.因为PSI使用了ExtJS 4.2.1作为UI,我并没有ExtJS的商业授权,所以使用的是ExtJS的开源版本,ExtJS开源版本的开源协议是GPL V3. 因为GPL协议有一定的"传染性",所以,PSI就采用了GPL V3协议. 3.但是,因为PSI是企业管理软件,如果不能私有化,很多企业总

开源进销存PSI - 技术随笔

1.Netbeans 英文版 说实在的,Netbeans的默认中文字体实在是不符合我的审美观.我是从微软的世界转移到开源的世界,IDE的美学观被微软给弄坏了.最后,把Netbeans弄成英文界面,才勉强接受. 如何实现Netbeans,网上也很多,我就再记录一次也无妨. 简单说就是修改 C:\Program Files\NetBeans 8.0.2\etc\netbeans.conf 给该文件中的netbeans_default_options增加-J-Duser.language=en -J-

开源进销存PSI - 关于UI的规划

这个话题是由PSI的开源协议引起,我用这篇文章讲讲我对PSI UI的规划. 1.因为目前我是个人,尚未注册公司,所以购买ExtJS的商业许可方面,有很多的麻烦事情. 2.PSI是商业项目,只是商业模式中有代码开源.所以,在成立公司后,会购买ExtJS的商业许可,从而解决PSI官方产品 ExtJS的分发问题. 如果只是这样,当然就谈不上规划了.下面,就来畅想一下啊. 1.对于企业应用,我深知UI框架的重要.所以,开发一套自身的框架,当然是必须的. 2.最自然的演化路径是:购买ExtJS的商业许可

开源进销存PSI - 为什么用PHP开发

PSI为什么要用PHP开发?这个问题,很多网友都问过我,今天就写一篇博客来讲讲这个历程. 概括讲,主要原因是:省钱. 2011年我启动了一个开源项目:CRM8000,当时是host在 teamhost上,teamhost后来的演变见这里:http://segmentfault.com/a/1190000000374128  . 所以,[email protected]成了我的注册邮箱,之后就一直沿用. CRM8000被OSC收录的时间是:2011年4月12日. 这一个版本的CRM8000,我是用