zoukankan      html  css  js  c++  java
  • dojo使用疑难杂症集锦

    最近在用dojo做项目, 把使用过程中遇到的一些问题记录下来, 方便以后查阅, 因为问题不断, 所以持续更新中..........

    嵌套 TabContainer 时会出现样式问题: tab控制样式问题。加入如下属性即可:
    <div data-dojo-type="dijit/layout/TabContainer" controllerWidget="dijit.layout.TabController" style="height:100%">

     
    dijit/layout/_LayoutWidget 的 startup方法的执行时间点,可以在这个方法上对子对象进行操作,因为该方法在生命周期是处理在该窗口子对象都创建并在dom流上.
     
     

    在使用dgrid时要注意startup方法的执行时间点. 要保证其已在dom流中. 万一在错误点执行的话,会出现渲染不正确(头部header被重叠).此时可以在父窗口中调用grid.resize().
     

    在使用dgrid的插件:selector 时,返回的store数据必需要带有id字段。不然会在触发全部选择事件时会报错。所以特别强调的是对所有的store数据严格有唯一主键标识。并不用一定是"id",可以指定 identityProperty字段值 

    Grid的数据源只能是js数组,指定store属性没用。因为它没有store属性。OnDemandGrid 和 [Grid,Pagination]组合时才可以指定store属性。

    在自定义ui模板组件时,如果里面有BorderContainer框架,则自定义的组件不要继承BaseWidget或_LayoutWidget, 要直接继承BorderContainer

    • Mixing in DijitRegistry will allow dijit layout widgets to recognize dgrid instances as child widgets, and as a result the layout widgets will take care to call startup and resize appropriately on the list/grid
    当一个Grid在一个Layout组件里时, 为了正确显示Grid,可以让Grid扩展DijitRegistry,这样layout就可以重新组织和实例化grid,并正确初始化它. 示例代码:
    var grid = new (declare([OnDemandGrid, DijitRegistry]))({
            store: myStore,
            columns: myColumns
        }, "grid");
    

    dojox/form/Manager注意:

    基表单子元素必需要有name属性:

    <input type="text" name="date1" value="2005-12-30" data-dojo-type="dijit/form/DateTextBox"
                           required="true" style="8em"/></td>

    在包含Manager的父容器定义时,如果覆盖重写方法时,必需先执行

     this.inherited(arguments);

    在处理表单时如果用dojox/form/Manager时, 在对表单设置值时调用setFormValues时, 我发现 dijit/form/RadioButton 元素的值设置不成功, 这是因为dojo代码有点问题: dojox/form/manager/_Mixin.js中310中代码如下:

    widget.set("checked", widget.value === value, !this.watching);
    

    竟然用的 === , 有必要这样吗????? 所以我们在html中用 

    <input id="${id}-comeFrom-1"
    type="radio" data-dojo-type="dijit/form/RadioButton" 
    value="2"
    name="comeFrom"/>
    <label for="${id}-comeFrom-1">customer</label> 
    

    因为模板中的value提取后是字符类型的值, 和我服务端返回的整数不能相等, 所以不相等. 改成value=2这种形式也没有.要改成如下:

    <input id="${id}-comeFrom-1"
    type="radio" data-dojo-type="dijit/form/RadioButton"
    data-dojo-props="checked:true,value:2" name="comeFrom"/>
    <label for="${id}-comeFrom-1">customer</label> <br/>
    

    在data-dojo-props中定义value, 必需是int类型的.

  • 相关阅读:
    OPC客户端的进程安全初始化
    [精华] Oracle安装(linux)总结一下[转]
    Linux防火墙iptables的设置与启动[转]
    Linux Server 5.5安装SVN+Apache服务[转]
    Red hat Linux Enterprise 5.4 Edtion 学习笔记[二]
    RedHat Linux 5企业版开启VNCSERVER远程桌面功能[转]
    Linux服务配置:Vsftp的基本配置[转]
    Linux查看和剔除当前登录用户
    Ubuntu10.04的中文问题汇集与解决[转]
    Linux下扩展swap分区的方法
  • 原文地址:https://www.cnblogs.com/jcli/p/3381720.html
Copyright © 2011-2022 走看看