Redmine客户端项目问题汇总

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'}]













  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值