zoukankan      html  css  js  c++  java
  • easyui以及js前端开发常见问题、用法整理(最重要的样式和图标自定义)

    自定义图标

    iconCls 所有属性值枚举:

    icon-add icon-print icon-mini-add icon-cvs icon-play icon-refresh
    icon-edit icon-help icon-mini-edit icon-pencil    
    icon-remove icon-undo icon-mini-refresh      
    icon-save icon-redo        
    icon-cut icon-back        
    icon-ok icon-sum        
    icon-no icon-tip        
    icon-cancel icon-filter        
    icon-reload icon-blank        
    icon-search

    如果要自定义图标,可以在icon.css中,仿照着增加即可,如下:

    .icon-clear{
    background:url('icons/clear.png') no-repeat center center;
    }
    .icon-remove{
    background:url('icons/edit_remove.png') no-repeat center center;
    }
    自定义:
    .icon-usotme{
    background:url('icons/usotme.png') no-repeat center center;
    }
    参考:https://www.cnblogs.com/GuZhenYin/p/6088327.html
    官方还提供了联机修改,可以参考https://www.jeasyui.com/themebuilder/index.php#。
    官方提供了所中theme,总的来说material最接近现在扁平化风格,只要配合把图标改了基本上是可行的如下:

    操作选中行
    datagrid获取选中行的id以及取消选中的行,可参考:http://blog.csdn.net/isea533/article/details/50929752
    datagrid的reload与查询参数

    通过
    queryParams可以设置datagrid的查询参数,但是每次reload的时候,queryParams会被清空,因此需要每次reload前重新获取,如下:
    $("#list_data").datagrid("options").queryParams = getParams();
    $("#list_data").datagrid("reload");

    datagrid标题居中,列靠左或者右
    { field: 'Name', title: '约束名称',  80, align: 'left', halign: 'center', },

    其中 align:'left' 控制内容居左 , halign: 'center' 控制标题居中。

    datagrid复杂表头

    frozenColumns: [[
    { title: '类型', field: 'regionname', 100, align:"center"}
    ]],
    columns:
    [
    [{"title":"应收合计","colspan":4},
    {"title":"应付合计","colspan":4}],
    [{"field":"uname0","title":"笔数","rowspan":1,"width":150, halign: 'center', align:"right"},
    {"field":"config_gender1","title":"应收","rowspan":1,"width":150, halign: 'center', align:"right"},
    {"field":"config_gender2","title":"已收","rowspan":1,"width":150, halign: 'center', align:"right"},
    {"field":"config_gender2","title":"未收","rowspan":1,"width":150, halign: 'center', align:"right"},
    {"field":"config_datatype0","title":"笔数","rowspan":1,"width":150, halign: 'center', align:"right"},
    {"field":"config_datatype1","title":"应付","rowspan":1,"width":150, halign: 'center', align:"right"},
    {"field":"config_datatype2","title":"已付","rowspan":1,"width":150, halign: 'center', align:"right"},
    {"field":"config_datatype2","title":"未付","rowspan":1,"width":150, halign: 'center', align:"right"}]
    ]

    datetimepicker调整日期

    bootstrap datetimepicker本身没有提供接口设置时间,如需设置,可以直接对input设置value,如下:

    function setLastWeek() {
    var sysdate = getSysdate();
    var sevenDaysAgo = addDays(sysdate,-7);
    $('input[name=beginBizDatetime]').val(sevenDaysAgo);
    $('input[name=endBizDatetime]').val(sysdate);
    }

    function setLastMonth() {
    var sysdate = getSysdate();
    var sevenDaysAgo = addDays(sysdate,-30);
    $('input[name=beginBizDatetime]').val(sevenDaysAgo);
    $('input[name=endBizDatetime]').val(sysdate);
    }

    /**
    * 获取当前的日期时间 格式“yyyy-MM-dd HH:MM:SS”
    * @returns {string}
    */
    function getSysdate() {
    var date = new Date();
    var seperator1 = "-";
    var seperator2 = ":";
    var month = date.getMonth() + 1;
    var strDate = date.getDate();
    if (month >= 1 && month <= 9) {
    month = "0" + month;
    }
    if (strDate >= 0 && strDate <= 9) {
    strDate = "0" + strDate;
    }
    var sysdate = date.getFullYear() + seperator1 + month + seperator1 + strDate;
    return sysdate;
    }

    function addDays(date,days){
    var d=new Date(date);
    d.setDate(d.getDate()+days);
    var month=d.getMonth()+1;
    var day = d.getDate();
    if(month<10){
    month = "0"+month;
    }
    if(day<10){
    day = "0"+day;
    }
    var val = d.getFullYear()+"-"+month+"-"+day;
    return val;
    }

     

    Javascript报uncaught typeerror illegal invocation错误

    在用ajax向后台传值的时候把一个对象当作参数传上去了,所以才会报这个错误。

    function getParams() {
    var param = {"operatorName":$("#operatorName"),"roleName":$("#roleName")};
    return param;
    }

    安装c-lodop之后,c-lodop web打印报“PRINT_INIT is not a function”。
    谷歌45版本后不再支持np插件功能, 包括火狐64位及edge浏览器,都不再支持,导致控件方式无法运行。lodop 公司推出了一个新产品 c-lodop, 兼容lodop语法及功能, 升级后 就可以正常运行。
    可以使用如下:
    <script src='http://localhost:8000/CLodopfuncs.js'></script>

    <script language="javascript" type="text/javascript">
    window.setTimeout(function() {
    var strHTML=document.getElementsByTagName("html")[0].innerHTML;
    LODOP.PRINT_INITA(1,1,770,660,"测试预览功能");
    LODOP.ADD_PRINT_TEXT(10,60,300,200,"这是测试的纯文本,下面是超文本:");
    LODOP.ADD_PRINT_HTM(30,5,"100%","80%",strHTML);
    LODOP.PREVIEW();
    },3000);
    </script>

    一定要等websocket连接之后调用,否则会提示websocket没有准备好。

    ajax请求中contentType:"application/json;charset=utf-8" 的含义(源于我们将http重定向为https后某些post请求出现异常,通过增加contentType:"application/json;charset=utf-8"后解决),使用浏览器输入url的方式没有办法定义Content-Type,所以spring无法发现request body。@RequestBody需要把所有请求参数作为json解析,因此,不能包含key=value这样的写法在请求url中,所有的请求参数都是一个json,需要使用ajax提交。如下:

    $.ajax({  
                url:"/api/xxx/aaa",  
                type:"POST",  
                dataType:"json",  
                async:false,  
                contentType:"application/json;charset=utf-8",  
                data: JSON.stringify({"id":"id0003","name":"name0003"}),  
                success:function(message){  
                    //TODO  
                },  
                error:function(message){  
                    $("request-process-patent").html("fail to post");  
                }  
            });  
    @RequestMapping(value="/aaa",method= RequestMethod.POST)  
      
        public JsonResult userMgr(@RequestBody Map<String,String> map){  
            String id=map.get("id");  
            String name=map.get("name");  
    } 
    $.ajax({  
                url:"/api/xxx/bbb",  
                type:"POST",  
                dataType:"json",  
                async:false,  
                data:{  
                    "id":"id001",  
            "name":"name001"  
                },  
                success:function(data){  
                    if("200"==data.code)  
                    {  
                        alert(data.data);  
                    }else{  
                        alert(data.code);  
                    }  
                },  
            });  
    @RequestMapping(value="/bbb",method= RequestMethod.POST)  
        public JsonResult usrAdmin(@RequestParam String id, @RequestParam String name){  
            logger.info("assetIssue parameters:"+ id+":"+name);  
    } 
    
    @RequestMapping(value="/bbb",method= RequestMethod.POST)  
        public JsonResult usrAdmin(MyObject param){  
            logger.info("assetIssue parameters:"+ param.id+":"+ param.name);  
    } 

     对于复杂的对象(对象嵌套对象),使用MyObject 会无法注入,报org.springframework.http.converter.HttpMessageNotReadableException: Could not read document: Can not deserialize instance of 。服务端用string接受,客户端使用JSON.stringify传递json字符串。

    javascript中$(function() {});

    javascript中$(function() {....}) 是 jQuery 中的经典用法,等同于 $(document).ready(function() {....}),即在页面加载完成后才执行某个函数,如果函数中要操作 DOM,在页面加载完成后再执行会更安全,所以在使用 jQuery 时这样的写法很常见。

    (function(){})() 代表立即执行一个匿名的方法
    一般用来与外界隔绝  制造一个似闭包的环境 创建一个作用域链 避免变量冲突。

    ES 6新特性

    ES6模块主要有两个功能:export和import (但是目前主流浏览器如chrome/ie都不支持 )

    export用于对外输出本模块(一个文件可以理解为一个模块)变量的接口

    import用于在一个模块中加载另一个含有export接口的模块。

     ES6中有两个新特性:let和 const,为了理解let,我们需要记住var是创建函数生存期内的变量。

    不像Java或其他语言,任何变量在JS中是在一个函数内创建,它会升级到哦函数之外部,不管你在哪里定义变量,都和你在函数顶部定义一样,这个行为称为hoisting。

    let是在一个代码块内,变量名只能在代码块中可见。

    总结:var是function-scoped,而let是 block-scoped.

    const是创建常量使用,一旦创建就一直不会被概念,如下:

    const SERVER_URL = "http://www.jdon.com"

    ES6还有其他新功能:Map, WeakMap, generators 和Proxies

    那么什么时候可以使用ES6这些特性呢?可见下面这个网址:

    http://kangax.github.com/es5-compat-table/es6/

    npm WARN enoent ENOENT: no such file or directory, open 'C:Program Files odejs package.json'

     

    在node.js安装目录下安装微薄、框架express


    出现了一些问题


    解决问题的方法是在C:Program Files odejs ode_modules 的npm目录下进行安装。

    安装webpack出现警告: fsevents@^1.0.0 (node_moduleschokidar ode_modulesfsevents):

     

    警告如下:

    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_moduleschokidar ode_modulesfsevents):
    npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.17: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
    npm WARN vue-loader-demo@1.0.0 No description
    npm WARN vue-loader-demo@1.0.0 No repository field.

    原因是因为: fsevent是mac osx系统的,在win或者Linux下使用了 所以会有警告,忽略即可。意思就是你已经安装成功了。气死我吧,我一直以为有啥问题呢

  • 相关阅读:
    设计模式-可复用面向对象软件基础笔记
    C#--笔记
    win系统下nodejs安装及环境配置
    三步将Node应用部署到Heroku上 --转载
    Ubuntu 重启命令
    Ubuntu ssh免密登录
    Ubuntu Hadoop环境搭建(Hadoop2.6.5+jdk1.8.0_121)
    Ubuntu vim使用
    Scala学习——array与arraybuffer的区别(初)
    Scala学习——可变参数(初)
  • 原文地址:https://www.cnblogs.com/zhjh256/p/7580606.html
Copyright © 2011-2022 走看看