下次自动登录
现在的位置:
& 综合 & 正文
controller之refs的用法
controller的作用范围是整个app,如果在app里定义了一个controller,app会自动创建该controller的实例,无须直接创建。
controller有2个重要的属性,之一是refs,通过refs可以建立到某个component的引用。
Ext.define('MyApp.controller.Main',{
extend:'Ext.app.Controller',
nav:'#mainNav',
infoPanel:{
selector:'tabpanel panel[name=fish] infopanel',
xtype:'infopanel',
autoCreate:true}
addLogoutButton:function(){
this.getNav().add({text:'Logout'});
上面的例子中建立了到id为mainNav的组件引用,选择条件是id=mainNav
和对Infopanel的引用,选择条件是在tabpanel-&panel(name是fish)-&infopanel,
如果该组件不存在则自动创建(autoCreate=true)。
通过这种方式自动创建的组件和在某个方法里创建的组件有什么区别呢?
区别就是他们的作用范围。
在上面的例子中由于selector限定了该infopanel是在name为fish的panel上,
如果换成 selector:'infopanel',没有限定infopanel存在位置,则创建的一个相当于全局的组件,
不受任何其他组件的约束。
在开发的过程中犯了这样一个错误,autoCreate时没有限定组件的所属,
而实际引用时却把它当成是某个组件的item,结果当然是没有出现期待的效果。
小结一下就是 在refs里面,selector有2个作用,一个就是纯选择器的作用,
另外一个作用就是当该组件不存在且指定autoCreate时起到限定组件创建时所属的作用。
&&&&推荐文章:
【上篇】【下篇】ExtJS4中的requires使用方法示例介绍
字体:[ ] 类型:转载 时间:
ExtJS4的requires是新增的机制,主要是实现异步加载机制,在下面的文章总将为大家介绍下ExtJS4中的requires使用方法,需要的朋友不要错过
ExtJS4的requires是新增的机制,主要是实现异步加载机制。这样在不点击对应的按钮或者选项的时候就不会加载对应的js文件,提高了加载速度和用户等待时间。 requires机制的实现通过一个Ext.Loader.setConfig函数来设置文件寻找的映射目录,然后在需要用到对应js文件的时候使用Ext.require进行加载。 文件的存储结构如下所示: &ux文件夹和lesson2.htm和lesson22.js在相同的目录下,而使用到的MyWin.js存放在ux的文件夹中。 在lesson2.html中的代码如下所示:
代码如下: &!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"& &html& &head& &meta http-equiv="Content-Type" content="text/ charset=GBK"& &title&extjs4 desktop&/title& &!-- css --& &link rel="stylesheet" type="text/css" href="../../extjs4/resources/css/ext-all.css" /& &script type="text/javascript" src="../../extjs4/bootstrap.js"&&/script& &script type="text/javascript" src="lesson22.js"&&/script& &/head& &body& &button id="myButton" align="center"&show&/button& &/body& &/html&
在该代码片中,并未加载ux目录下的MyWin.js文件,那么在加载该页面的时候,并不会把MyWin.js文件同时加载进来,只是在需要的时候再加载。这里的需要是通过点击button来实现的。 lesson22.js文件内容如下所示:
代码如下: (function(){ Ext.Loader.setConfig({ enabled:true, //开启异步加载模式 paths:{ myApp:'lesson2/ux' //声明文件的位置 } }); Ext.onReady(function(){ Ext.require('ux.MyWin',function(){ var mw = Ext.create('ux.MyWin',{ title:'my Test' }); Ext.get('myButton').on('click',function(){ mw.show(); }); }); }); })();
ux目录下的MyWin.js文件内容如下所示:
代码如下: Ext.define('ux.MyWin',{ extend:'Ext.window.Window', title:'sign up', width:400, height:300 });
注意:这里的文件名称MyWin和函数名称必须一样,我试验了一下,如果不一样也会造成无法显示。 刚开始我使用的方法是uspcat上的ExtJS4教学视频第二讲的写法进行书写,但是始终无法出现我想要的结果,可能是版本问题,也可能是自己的问题,通过这样修改,能够使用requires方法了。特此为记,供有相同困惑的人使用。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具