您的位置:首页 > 其它

Redmine客户端项目问题汇总

2012-12-02 10:55 267 查看
1.TypeError: 'undefined' is not an object (evaluating 'firingFn.apply'):函数名出现错误;

2.当使用Ext.Container类的时候,一定要使用layout属性,通常设置为fit,不然会出现界面显示不出来的问题,同时Ext.form.Panel类不需要设置layout属性

3.实例化一个类的时候,使用xtype属性创建和Ext.create创建实例的效果不一样:如果在类里面使用xtype属性创建实例,会导致这个实例的方法不可用。而Ext.create则不会出现这种情况。

4.以下创建一个button实例的代码,在mvc模式下面,必须指明scope的范围为this,

var logout = {
xtype:'button',
text:'Logout',
handler:this.onLogout,
scope:this
};
才可以在定义函数里面使用fireEvent方法:

onLogout:function(){
this.fireEvent('onLogout',this);
}
另外需要注意的是,不可以在handler的函数里面传参数,比如以下代码:

var logout = {
xtype:'button',
text:'Logout',
handler:this.onLogout(param),//不可以传入参数,因为函数名onLogout后面的圆括号会导致该函数被执行,在handler函数调用之前就已经被执行了
scope:this
};


onLogout:function(param){
console.log('onLogout is tapped in Projects');
this.fireEvent('onLogout',this);
}
那么参数是怎么传递的呢?这个参数的传递由handler的处理函数内定决定了的,我们无法决定可不可以传入参数。比如以下函数就可以传入参数:

projectsList = Ext.create('Ext.dataview.List',{
itemTpl:'name: {name}<br> id: {id} identifier:{identifier} ',
store:projectsStore,
onItemDisclosure:true,
listeners:{
disclose:{
fn:this.onProjectsItem,//这里并没有传入参数,但是在函数定义的时候的确有参数,而且,当disclose事件发生的时候,其中的参数可以被使用,record里面包含了当前item的数据
scope:this
}
}
});

onProjectsItem:function(projectsList,record){//注意该函数参数的顺序,这个函数可以在sencha touch里面查到,其参数个数和顺序也已经由sencha touch文档决定了,尽管函数名(onProjectsItem)是我们自由定义的,但是,可以说,事件(disclose)就已经决定了这个我们自定义的执行函数能否带参数,以及带几个参数!
this.fireEvent('onProjectsItem',this,record);//
}

其参数record可以随着fireEvent函数一起被传入到controller类里面去,并且可以从record里面直接调用get方法来取出数据,代码如下:

onProjectsItem:function(projectsList,record){//函数参数传递的时候,必须要连带参数一起传过来

currProjectIdentifier = record.get('identifier');//直接通过get方法从list的当前item的参数record里面取出数据!
}


5.对list的item进行分组以及排序:

a.分组:

分组涉及到2个地方:

一个是store里面,添加grouper属性,代码如下:

grouper: {
groupFn: function(record) {
return record.get('name')[0].toUpperCase();//其中name是model中的某个字段,[0]是该字段值的第一个字符,后面的toUpperCase方法奖该字符转换为大写
}
一个是在list组件里添加属性grouped,代码如下:

grouped:true


如果需要对分组添加indexBar的话,只需要在list的属性里面设置属性indexBar,代码如下:

indexBar: true


b.排序:排序只需要在一个地方设置就好,设置store的属性sorters,代码如下:

sorters: [{ property: 'name', direction: 'DESC'}]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: