EasyUI Forum
May 15, 2024, 05:08:06 AM *
Welcome, Guest. Please login or register.

Login with username, password and session length
News:
 
   Home   Help Search Login Register  
Pages: [1]
  Print  
Author Topic: 对 easyui 1.4 的试用反馈  (Read 11441 times)
iamjxc
Jr. Member
**
Posts: 80


View Profile
« on: August 02, 2014, 07:36:30 AM »

1.4 版悄然发布, 感谢作者的不懈努力. 原来 stworthy 不回答问题, 是忙着开发 1.4 去了.  Grin
经过一天的尝试, 基本把 1.4 集成到项目里, 下面是我的试用体会.

1.4 新特性
   textbox 的出现太赞了, 终于统一了 form 里各个元素的外观样式
   而且整合了 prompt 和 button , textbox 似乎是从 searchbox 改造而来的?

   各个控件获得焦点后, 边框有光晕效果, 还不错
   filebox 也很赞, datetimespinner 正是我需要的, 不过今天没时间, 明天尝试用一下

   combo 的 panelMaxHeight 属性, 我曾提过用css控制的方案, 不过这个对浏览器兼容更好些, 而且能够单独控制

   required 必填项提示, 去掉了难看的惊叹号图标, 改用粉红色背景标识, 还不错
   easyui 控件只读后, 背景色还是白色, 应把只读项与可编辑项目区分开, 如:
      input[readonly]{background-color: #f4f0f0;}

1.4 发布日志里没写, 实际测试已解决的:
   在有 layout 的页面里打开一个fit=true 的 dialog, 则浏览器窗口缩放时 dialog 不缩放的问题已解决


1.4 新的问题和建议
   textbox 在录入时, 回车执行查询操作, 但是值没有提交, 只有textbox失去焦点时才把值赋给 textbox-value 控件
      我发现 datebox 的 onchange 是在输入时就触发的, 并且 keyHandler 支持 enter
      建议 textbox 也统一编程模型, 统一控件的事件特性

      我的临时解决方案, 自己写 keydown 处理
      var text = el.textbox("getText");
      el.textbox("setValue", text);

   filebox 在 chrome 里文字显示位置有问题, 向上错位了

   必填项提示的国际化字符串有遗漏, 需要加入下面的
      if ($.fn.textbox){
         $.fn.textbox.defaults.missingMessage = '该输入项为必输项';
      }

   combo-arrow 不应该获得焦点
      在按tab键跳转时, 焦点先跳到combo-arrow上, 再按一次tab才进入combo-text, 操作麻烦
      建议设置 combo-arrow 的 tabIndex=-1

   combogrid 的高度似乎有问题,  combogrid 的 padding 是 4px, 其它控件都是 2px
      padding-bottom: 4px;
      padding-top: 4px;

   combotree 仍然无法实现在 onlyLeafCheck=true 并且 checkbox=false 的情况下, 即单选时, 控制只能选择叶子节点
      onlyLeafCheck 参数只是控制了多选时不生成复选框
      而实际项目有这样的需求, 即用户不能选择分类, 只能选择叶子节点

   datagrid 控件, 为什么行号显示 NaN 呢?
      必须显式设置 pageSize: 30 才行, 也可能是其他参数冲突导致?

   textbox 初始化时, 如果 multiline = true , 并且没有设置 width 和 height 参数, 并且 target 是 textarea, 则建议取 textarea 的 height


   combobox
      为了实现汉字拼音检索的支持, 我复写了 doQuery 方法, 但是 doQuery 里调用了 request 方法, 让我很受伤
      if (opts.mode == 'remote'){
         request(target, null, {q:q}, true);
      }

      request 方法没有暴露. 复写的 doQuery 里如何调用这个 request 呢?

      我的方案是直接修改 easyui 1.4 压缩后的代码, 把 request 接口暴露出来.

      通过下面的参考语句, 定位要修改的位置
      查找到 .find("div.combobox-item,div.combobox-group").hide();
      往上找到下面的内容
      if(opts.mode=="remote"){
            _8f9(_8fe,null,{q:q},true);   // 则 _8f9 就是request编译后的方法名
      }
      
      再找到 $.fn.combobox.defaults=$.extend({},$.fn.combo.defaults
      往下找到 mode:"local",method:"post",
      手工插入: request:_8f9,

      这样, 就把 request 方法暴露出来, 然后在 doQuery 里就能调用 request 了
      if (opts.mode == 'remote'){
         $.fn.combobox.defaults.request(target, null, {q:q}, true);
      }

      希望 stworthy 给一个更好的方案.  Grin
« Last Edit: August 02, 2014, 06:35:57 PM by iamjxc » Logged
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!