最近开始学ExtJS,书上的第一个例子是:
1
2
3
Ext.onReady(function(){
    Ext.Msg.alert('Hello.', 'Hello');
});
这个是ExtJS最简单的一个例子了,就是在页面上显示一个对话框,可是我运行却什么都没有显示。。。
在浏览器开发者工具的控制台中有如下错误信息:
(Cannot call method 'alert' of undefined)
 
这让我很是无语,因为可以确定已经正确引入ExtJS所需的js文件了,可是为什么说alert函数没有定义呢?
我想可能是因为书本比较旧(书中用的版本是3.0,我用的是4.0)缘故吧,于是查看Ext的文档,发现了几点信息:
 
一,Ext.Msg是Ext.window.MessageBox.的别名
二,在extjs4中引入的新的类定义的方式:

1
Ext.define(className, members, onClassCreated);

有如下范例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Ext.define('My.sample.Person', {
    name: 'Unknown',
 
    constructor: function(name) {
        if (name) {
            this.name = name;
        }
    },
 
    eat: function(foodType) {
        alert(this.name + " is eating: " + foodType);
    }
});
 
var aaron = Ext.create('My.sample.Person', 'Aaron');
aaron.eat("Salad"); // alert("Aaron is eating: Salad");
可以得知Ext中类的定义用define方法,实例化类用create方法。
 
知道怎么实例化类后,我们就可以试着实例化Ext.window.MessageBox,测试如下代码:
1
2
3
4
Ext.onReady(function(){
    var msg=Ext.create('Ext.window.MessageBox');
    msg.alert('Hello.', 'Hello');
});
运行成功!
 
但是Ext.Msg应该是个全局的单例,我们这种用法终究感觉有些别扭,来看看Ext的源码,瞧瞧Ext.Msg到底在哪里会被初始化:
1
2
3
4
5
Ext.define('Ext.window.MessageBox', {
    .....
}, function() {
    Ext.MessageBox = Ext.Msg = new this();
});
在define函数的第三个参数中Ext.Msg被定义,那这个函数何时会被调用呢?
 
请看define方法的第三个参数onClassCreated的描述:
Callback to execute after the class is created, the execution scope of which (this) will be the newly created class itself.
即这个函数会在类被实例化时调用,在这个函数中new this()就是new这个类本身。
 
可知估计是Ext4之后像Ext.Msg这样的全局单例并不会在程序开始的时候就会定义,而是需要你实例化该类一次之后才会被定义。
于是有如下代码:
1
2
3
4
Ext.onReady(function(){
    Ext.create('Ext.window.MessageBox');    //全局只要调用一次即可
    Ext.Msg.alert('Hello.', 'Hello');
});
Ext中其他的全局单例也是一个道理吧。

ExtJS初学笔记---Ext.Msg.alert无效果的更多相关文章

  1. Ext.Msg.alert添加确定按钮

    Ext.Msg.alert('成功','成功!!', function(btn){ if(btn!=null{//btn=='ok'||btn=='cancel' ... } });

  2. 【编程技巧】alert vs Ext.Msg.alert

    alert会阻塞程序的运行. Ext.Msg.alert是异步的,它的调用并不会停止浏览器中代码的执行.

  3. Extjs学习笔记--Ext.tree.Panel

    Ext.create('Ext.tree.Panel', { title: 'Simple Tree', width: 200, height: 150, store: store, rootVisi ...

  4. 20. Extjs学习笔记——Ext.data.JsonStore使用说明

    Ext.data.JsonStore继承于Ext.data.Store,使得从远程JSON数据创建stores更为方便的简单辅助类.JsonStore合成了Ext.data.HttpProxy与Ext ...

  5. Extjs学习笔记——Ext.data.JsonStore使用说明

    Ext.data.JsonStore继承于Ext.data.Store.使得从远程JSON数据创建stores更为方便的简单辅助类. JsonStore合成了Ext.data.HttpProxy与Ex ...

  6. ExtJS Ext.MessageBox.alert()弹出对话框详解

    Ext.MessageBox是一个工具类,他继承自Obiect对象,用来生成各种风格的信息提示对话框,Ext.Msg是该类的别名,使用Ext.MessageBox和用Ext.Msg效果是一样的,而后者 ...

  7. ExtJs 4中 Ext.Ajax.request提交实现waitMsg等待提示效果

    //submitForm为form表单 var myMask = new Ext.LoadMask(Ext.getBody(),{msg:"请稍等,正在导入..."}); myMa ...

  8. Extjs 学习笔记1

    学习笔记 目   录 1 ExtJs 4 1.1 常见错误处理 4 1.1.1 多个js文件中有相同的控件,切换时无法正常显示 4 1.1.2 Store的使用方法 4 1.1.3 gridPanel ...

  9. extjs 学习笔记(二)

    EXTJS实用开发指南 1. 要使用ExtJS 框架的页面中一般包括下面几句: <link rel="stylesheet" type="text/css" ...

随机推荐

  1. redis之(二)redis单机的安装,配置,启动,关闭

    [1]下载redis压缩包,解压,编译

  2. hdu 1087(LIS变形)

    Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  3. Rotate Image——数学相关

    You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). ...

  4. Valid Number——分情况讨论最经典的题(没细看)——这题必须静下心来好好看看

    Validate if a given string is numeric. Some examples: "0" => true " 0.1 " =&g ...

  5. 辨析各类web服务器:Apache/Tomcat/Jboss/Nginx/等,还有Nodejs

    先说一下各类服务器能干啥,特点是啥,然后在区分他们的类别. (1)Apache: Apache是指Apache软件基金会的Apache HTTP Server, 它能够接收http请求,然后返回各类资 ...

  6. git在window与linux的换行符问题

    1:背景.我win7,后端是win10,使用了TortoiseGit工具.我使用ssh,他使用http.仓库是在linux,使用gitLab管理 2:问题.仓库是总监之前建好的.后端把文件add后pu ...

  7. (编译)使用 AppCenter 持续输出导出到 Application Insights

    原文地址:https://blog.xamarin.com/appcenter-continuous-export-application-insights/ 五星手机应用有一个特殊的特点:他们不会放 ...

  8. Larazrus 快捷键 总结。

    delphi+cnpack 用惯了,转移到 lazarus 有点难受是不是!其实, lazaurs 的编辑器也是蛮强 大的,支持代码补全,自动完成,模板编辑,多行缩进注释,选定代码后批量更改里面的单 ...

  9. vue-music 关于Search(搜索页面)-- 搜索结果优化

    搜索结果 列表点击跳转到相应的歌手详情页或者 歌曲页面,通过子路由跳转,和singer 组件一样 在suggest.vue 组件判断如果点击的是歌手,则new 一个歌手对象,通过这个对象的id 属性值 ...

  10. linux c 学习笔记

    gcc是linux c编译器 gcc -o o指定文件名或者会生成a.out文件 comment 注释 generate(生成) some simple ouput 使用标准 为C89