ExtJS初学笔记---Ext.Msg.alert无效果

摘要:
最近,我开始学习ExtJS。书中的第一个例子是:123Ext.onReady;这是ExtJS的最简单示例。它是在页面上显示一个对话框,但我运行它时没有显示任何内容。。。在我们知道如何实例化类之后,我们可以尝试实例化Ext.window.MessageBox并测试以下代码:1234Ext.onReady;运行成功!据估计,Ext4之后的Ext.Msg等全局单例不会在程序开始时定义,而只能在实例化一次类之后定义。
最近开始学ExtJS,书上的第一个例子是:
1
2
3
Ext.onReady(function(){
    Ext.Msg.alert('Hello.', 'Hello');
});
这个是ExtJS最简单的一个例子了,就是在页面上显示一个对话框,可是我运行却什么都没有显示。。。
在浏览器开发者工具的控制台中有如下错误信息:
ExtJS初学笔记---Ext.Msg.alert无效果第1张
(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);
    }
});
 
varaaron = 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(){
    varmsg=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 = newthis();
});
在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无效果》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇倒计时睡眠法【MSSQL】How can i see what IP address made the request to SQL Server?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

javaScript 全局变量注意

1.注意隐式全局变量   function sum(a,b)   {     result=a+b;     return result;   } 上面虽然返回结果但是多了一个全局变量命名空间。 最好使用var 来声明变量 function sum(a,b) {    var result=a+b;   return result; } 2.注意创建隐式全...

Monit:开源服务器监控工具

Monit是一个跨平台的用来监控Unix/linux系统(比如Linux、BSD、OSX、Solaris)的工具。Monit特别易于安装,而且非常轻量级(只有500KB大小),并且不依赖任何第三方程序、插件或者库。 Monit可以监控服务器进程状态、HTTP/TCP状态码、服务器资源变化、文件系统变动等等,根据这些变化,可以设定邮件报警、重启进程或服务。易...

JavaScript初学指南

目录: 包含与引入(Embedding,including) write 和 writeln 文档对象(document object) bgColor 和 fgColor 消息框(Message Box) 变量(Variables)和条件(Conditions) 函数(Function) onClick onLoad onUnload 表单(Form)...

Extjs6(特别篇)——项目自带例子main.js拆分详解

本文基于extjs6.0.0 一、拆分代码来看看 1、主页面main是个tab页; 写一些页面的依赖; 标明页面的controller和viewModel Ext.define('Learning.view.main.Main', { extend: 'Ext.tab.Panel', xtype: 'app-main',...

[转载]ExtJs4 笔记(6) Ext.MessageBox 消息对话框

 作者:李盼(Lipan) 出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有。转载时须注明本文的详细链接,否则作者将保留追究其法律责任。 本篇演示消息对话框的用法,ExtJs封装了可能用到的各类消息框,并支持自定义的配置。 如下是用到的html: [html] <h1>各...

利用Bootstrap框架制作查询页面的界面

UI设计实战篇——利用Bootstrap框架制作查询页面的界面  Bootstrap框架是一个前端UI设计的框架,它提供了统一的UI界面,简化了设计界面UI的过程(缺点是定制了界面,调整的余地不是太大)。尤其是现在的响应时布局(我的理解是页面根据不同的分辨率,采用不同的页面元素的布局),在Bootstrap中很好的支持了,只要简单设置了属性,就能自动实现...