您的位置: 首页 > 技术文档 > 网页制作 > 使用YUI 3开发Web应用的诀窍
重新认识CSS的权重 回到列表 firebug net面板详解
 使用YUI 3开发Web应用的诀窍

作者:拔赤 时间: 2011-04-18 文档类型:翻译 来自:Taobao.com UED Team

第 1 页 使用YUI 3开发Web应用的诀窍 [1]
第 2 页 使用YUI 3开发Web应用的诀窍 [2]
第 3 页 使用YUI 3开发Web应用的诀窍 [3]
第 4 页 使用YUI 3开发Web应用的诀窍 [4]
第 5 页 使用YUI 3开发Web应用的诀窍 [5]
第 6 页 使用YUI 3开发Web应用的诀窍 [6]
第 7 页 使用YUI 3开发Web应用的诀窍 [7]
第 8 页 使用YUI 3开发Web应用的诀窍 [8]
第 9 页 使用YUI 3开发Web应用的诀窍 [9]

配置属性

静态成员中最重要的就是ATTRS,其中列出了你的类所需的所有配置参数。例如你需要一个名为value的成员,这个成员用于保存一个数字,默认初始值为0,可以这样传入第五个参数。

ATTRS: {
    value: {
        value: 0,
        validator: Lang.isNumber
    }
}

ATTRS中当然可以写入多个成员,每个成员都下辖各自的配置项,通过阅读addAttr()来了解更多参数配置。我们看到,validator使用了之前代码中定义的缩写Lang,验证函数得到一个实参的输入,返回一个布尔值,所有的Y.Lang.isXxxx都可以作为校验函数,当然,为了更严格细致的校验,你可能需要定义新的validator、setter和getter,这里推荐使用字符串作为句柄赋值给validator、setter或者getter,Attribute会将字符串对应到具体的函数。比如要定义一个validCodes属性,可以接收单个值或者一个数组,但应当统一返回一个数组:

ATTRS: {
    validCodes: {
        setter: ‘_setValidCodes’
    }
}

我们需要在Y.Base.create()的第四个参数中声明_setValidCodes方法,其他的成员也可以在这里追加声明。

_setValidCodes: function (value) {
    if (!Lang.isArray(value)) {
        value = [ value ];
    }
    return value;
}

除非函数足够简单,最好单独重写setter、setter和validator,传入他们的函数名作为实参,让Attribute将函数名对应到真实的函数。

总之,使用setter作为标准输入,这样会为组件带来一些非常有用的特性。比如配置项值的改变会触发beforeChange和afterChange事件,如果在beforeChange事件中停止事件,则可以阻止属性的更改,因此组件实例生成后,请善用自定义事件。比如你如果绑定了afterChange事件,如果触发了回调,那么一定是值被改变了,而不是即便试图更改属性值却在beforeChange中被阻止了。

validator和setter的校验强度是你来决定的,如果你的validator的校验逻辑很严格,就不用再在setter中添加严格的校验,甚至不需要setter,反之亦然,setter校验很严格的话也可以缺省validator。比如,下面两句代码,你可以任选其一:

validator: Y.Lang.isBoolean,   // to make the attribute accepts strictly a Boolean
setter: Boolean, // to make the attribute accept any value and have Boolean

Setter也可以作为校验器来使用。如果输入的值不能转换成attribute可接受的值,setter就会返回Y.Attribute.INVALID_VALUE。这种情况下,attribute不会发生改变。

当我定义成员的时候,通常会指定这个常量,并放在模块的顶部(和CBX, BBX这些缩写声明一起),例如:

var VALUE = ‘value’,
    VALID_CODES = ‘validCodes’;

这样做的原因是,在一个模块内可能会多次用到这个值,使用常量更加方便。但是,请千万别在属性声明中使用这些常量。

ATTRS: {
    // *** Don’t do this *** //
    VALUE: {
        value: 0,
        validator: Lang.isNumber
    }
}

这样书写会生成一个名为VALUE而不是value的属性成员,同时记住,不要覆盖基类中的属性成员,Widget中已经有许多属性成员(见表格),如boundingBox、visible、disabled、height、width等,你也可以修改他们,Y.Base.create()会将父类和基类(Base)中的属性成员合并,所以要重载已有的属性成员,你只要在派生类中重复定义即可。

当你要定义的属性成员是数组或者对象的时候要尤为小心,对象(数组)是一个引用值,如果初始化的属性中含有object,他们(所有实例的这个成员)指向的会是同一个object。当你更改这个object或者删除的时候,所有的实例也都跟着改变(prototye永远指向父类的prototye),所以,Base提供了克隆的机制,在你传入object属性成员的时候克隆一份,这会避免引用重复的问题,其他objects的初始化,请使用valueFn参数,或者直接在类的构造函数(initialize)中构建他们。

出处:Taobao.com UED Team
责任编辑:bluehearts

上一页 使用YUI 3开发Web应用的诀窍 [2] 下一页 使用YUI 3开发Web应用的诀窍 [4]

◎进入论坛网页制作WEB标准化版块参加讨论,我还想发表评论

相关文章
构建成功web应用的十项黄金法则
作者文章
什么是Node?
JS语法检查插件 jsLint for Vim
一场关于YUI3/jQuery的精彩辩论
YUI3设计中的激进和妥协
关键字搜索 常规搜索 推荐文档
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
周大福“敬•自然”设计大赛开启
国际体验设计大会7月将在京举行
中国国防科技信息中心标志征集
云计算如何让安全问题可控
云计算是多数企业唯一拥抱互联网的机会
阿里行云
云手机年终巨献,送礼标配299起
阿里巴巴CTO王坚的"云和互联网观"
1499元买真八核 云OS双蛋大促
首届COCO桌面手机主题设计大赛
栏目最新 栏目最新列表
浅谈JavaScript编程语言的编码规范
如何在illustrator中绘制台历
Ps简单绘制一个可爱的铅笔图标
数据同步算法研究
用ps作简单的作品展示页面
CSS定位机制之一:普通流
25个最佳最闪亮的Eclipse开发项目
Illustrator中制作针线缝制文字效果
Photoshop制作印刷凹凸字体
VS2010中创建自定义SQL Rule
>> 分页 首页 前页 后页 尾页 页次:3/91个记录/页 转到 页 共9个记录

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
网站可用性测试及优化指南
《写给大家看的色彩书1》
《跟我去香港》
众妙之门—网站UI 设计之道
《Flex 4.0 RIA开发宝典》
《赢在设计》
犀利开发—jQuery内核详解与实践
作品集 更多内容

杂⑦杂⑧ Gold NORMANA V2