cakephp工作笔记16---JS技巧篇

一在js中,如果将一个数字转为二进制?
<script>
var n=2345.333;
alert(n.toString(2));
</script>

二、在extjs中,editgrid的combobox里如何渲染值
            header: '操作员权限',
            dataIndex: 'roleName',
            width: 150,
            editor: roleComb,
            renderer:function(value)
            {
           
            var idx = roleComb.store.find(roleComb.valueField, value);
    var rec = roleComb.store.getAt(idx);
            return (rec == null ? value : rec.get(roleComb.displayField) );
           
          }
三、ajax回调函数中获取对象 -- scope和createDelegate
    a. 为Ajax设置scope。
例子1
function doSuccess(response) {
      this.dom.value = response.responseText;
  }
  Ext.lib.Ajax.request(
      'POST',
      '08.txt',
      {success:doSuccess,scope:text},
      'param=' + encodeURIComponent(text.dom.value)
  );          
例子2:Ext.Ajax.request({
url:'/stores_houses/savename',
method:'post',
scope:this,
params:{'shid':this.shid,'shname':text},
success:function(res)
{
this.shname = text;
this.createNameText();
},
failure:function(res)
{
}

}); 
b.    为success添加createDelegate()。
  function doSuccess(response) {
      this.dom.value = response.responseText;
  }

  Ext.lib.Ajax.request(
      'POST',
      '08.txt',
      {success:doSuccess.createDelegate(text)},
      'param=' + encodeURIComponent(text.dom.value)
  );
createDelegate只能在function上调用,它把函数里的this强行指向我们需要的对象,然后我们就可以在回调函数doSuccess里直接通过this来引用createDelegate()中指定的这个对象了。它可以作为解决this问题的一个备选方案。
如果让我选择,我会尽量选择scope,因为createDelegate是要对原来的函数进行封装,重新生成function对象。简单环境下,scope就够用了,倒是createDelegate还有其他功能,比如修改调用参数等。
示例在10.store/08.html中。


四、如何给Label添加click事件
http://crabdave.iteye.com/blog/325974
     //在渲染后添加click事件
   Ext.form.Label.prototype.afterRender = Ext.form.Label.prototype.afterRender
     .createSequence(function() {
        this.relayEvents(this.el, ['click']);
       });//这一段一定要放在label之前

五、Js 和 PHP 中保留小数点后X位数的方法 toFixed、round、number_format、sprintf
http://blog.csdn.net/richie214/archive/2009/11/16/4815143.aspx

六、在Ajax操作中添加等待条
var myMask = new Ext.LoadMask(Ext.getBody(), {msg:"Please wait..."});
Ext.Ajax.on('beforerequest', myMask.show, myMask);
Ext.Ajax.on('requestcomplete', myMask.hide, myMask);
Ext.Ajax.on('requestexception', myMask.hide, myMask);

七、grid动态添加列
var columns = [];
columns.push(new Ext.grid.RowNumberer());
columns.push(new Ext.grid.Column({header:'tt',dataIndex:"test"}));
columns.push(new Ext.grid.Column({header:'tt2',dataIndex:"test2"}));
dirgrid.getColumnModel().setConfig(columns);

八、javascript里的json是当做对象来操作,可以用“对象.字段名”来访问
   而在php中则是按照数组来访问"对象[字段名]

九.javascript里的算术运算
http://hi.baidu.com/tzymj/blog/item/71b3adb1de6e0c5d09230296.html

十、extjs的grid获取总行数和列数
   行数:var total = mygrid.getStrore().getCount();//数据行数
   列数:var colIndex = grid.getColumnModel().getColumnCount();
十一、获取浏览器的高度
http://blog.51xuewen.com/wangpan/article_2091.htm

十二、Extjs的表单的提交
http://www.codeweblog.com/extjs-notes/
editfm.getForm().doAction('submit',{
   url:'applicationform.php',
   method:'post',
   params:{},
   success:function(form, action)
   {
   //window.location.href="index.html";
   },
   failure:function()
   {
  
   }
   });
十三、如果网页content="text/html; charset=utf-8" ,则 mysql_query("SET NAMES utf8",$myconn);否则乱码,如果网页是gb2312则mysql也必须是gb2312

十四,在store的读取事件加进度条
  listeners:{
                   beforeload:function(store,options)
    {
    //开始进度条
Ext.MessageBox.show({
           title: '请稍等',
          msg: '正在加载开锁记录...',
          width:300,
           wait:true,
            waitConfig: {interval:200},
           closable:false
       });
  },
  load:function(store,records,options)
  {
  Ext.MessageBox.hide();
  }

十六,javascript的oop
   用var可以定义类的private属性,而用this能定义类的public属性;
   用var定义的方法也是private方法,而用this定义的是类的public方法,
http://home.phpchina.com/space.php?uid=76267&do=blog&id=71740


十七、DOM事件列表
http://www.caihong.cc/?p=128

  

你可能感兴趣的:(工作,Ajax,PHP,ext,cakephp)