`

CanJS小试

 
阅读更多

最近做了个不太复杂的console项目,基本上就是增删改查外加上传文件。

计划用JS的MVC框架来做,粗略了解了一下Ember,CanJS,BackBone这三个,选择了貌似比较轻的CanJS。

 

整体情况还比较顺利,但是由于官网文档的不友好,还是遇到了一些麻烦。

 

1,Model 的 findAll对应的API的返回结果只能是 [{}, {}] 或 {data:[{},{}], start:1, len: 10}。如果是后一种,那么前端接收到的结果实际上是个类数组对象,本身包含了data中的项,以及属性start和len,但是没有data属性了。

还有,len不能为length,会使页面模板中的list 等遍历方法出错。

2,提供了绑定,但是只能改变之前绑定的变量的属性值来实现数据刷新。比如,之前绑定了curData变量,那么需要将newData的各个属性值赋给curData。另一个前提是在模板中用obj.attr()方法来获取属性值,而不是.(点号)。

3,Model的5个方法非常死,必须使用那5个名字:findAll, findOne, create, update, destroy,否则不工作。如果findAll的返回结果是对象,并且嵌套太多,那么结果会比较奇怪。

 

官方文档很多东西说的并不明确,toturial组织上也有点混乱,看起来云里雾里的。

因为项目不复杂,用到的部分也就是Model的api访问;Control的init初始化模板以及自定义事件处理方法; 还有模板渲染。在后台API出来之前,用了一下fixture做模拟。其实对于逻辑不复杂的项目来说,完全可以在jQuery的基础上写几个方法搞定MVC。

如果canjs的文档和Tutorial能像Ember的那样,开发速度应该会快很多,也许也可以用上更多的特性。

 

下次有机会会尝试一下backbone、Angular以及复杂庞大的Ember。

 

P.S.  在使用uploadify的时候发现了一个jQuery在IE浏览器上的bug:当使用jQuery的ele.html()方法时,jQuery会先清空ele当前的每个子元素;为了防止内存泄露,在清空之前,会调用acceptData方法判断该元素是否可扩展以决定是否清空其data。acceptData()原注释为“A method for determining if a DOM node can handle the data expando”。于是,如果子元素为flash对象,即object标签,那么在IE中会报错,找不到对象,实际上是hasAttribute这个方法不存在。

见:http://bugs.jquery.com/ticket/9560

这个错误两年前就在jQuery的bug系统里有了,似乎不了了之。

 

我的解决方法是,将Query 1.10.2版本的源码中的3791行:

return !noData || noData !== true && elem.getAttribute("classid") === noData;

改为:

return !noData || noData !== true && (elem.getAttribute && elem.getAttribute("classid") === noData);

分享到:
评论

相关推荐

    牛刀小试的汇编教程,很好的入门教材!

    这个“牛刀小试的汇编教程”是为初学者设计的一份入门教材,旨在帮助学习者快速理解和掌握汇编语言的基本概念和操作。 汇编语言与机器语言紧密相关,每一行汇编代码都可以直接转换成相应的机器码,执行效率高,但...

    通达信指标公式源码 小试牛刀精髓.doc

    本文档《通达信指标公式源码 小试牛刀精髓.doc》主要介绍了如何利用公式进行技术分析,帮助用户在股市中寻找潜在的投资机会。以下是其中涉及的一些关键知识点: 1. **移动平均线(MA)**: - 移动平均线是股票分析...

    Android 小试牛刀(一)

    Android 小试牛刀1 博文链接:https://huangpengxiao.iteye.com/blog/199497

    第二周牛刀小试测试题答案1

    【知识点详解】 1. 营销漏斗理论:在描述中提到的“营销漏斗”,是指潜在客户从认知品牌到最终购买的过程,通常分为曝光与发现、考虑与购买意图、采取行动和复购等阶段。对于刚建立的户外用品电商网站,目标是增加...

    通达信指标公式源码小试牛刀.doc

    本文件“通达信指标公式源码小试牛刀.doc”分享了一些自定义的技术指标公式,以下是对这些公式的详细解读: 1. **VAR1**:这是基于N日最低价(LLV)和最高价(HHV)计算的一个动量指标。它通过计算收盘价相对于价格...

    牛刀小试VC

    《牛刀小试VC》是一本面向初学者的VC(Visual C++)编程教程,旨在帮助读者快速掌握VC++的基础知识和应用技巧。这本教程以其高清PDF版的形式,为学习者提供了清晰、易读的学习材料,使得学习过程更为愉快且有效。 ...

    牛刀小试C语言基础教学及实践

    "牛刀小试C语言基础教学及实践"这套教程显然是为了帮助初学者建立起扎实的C语言基础。 在C语言的学习中,首先会接触到的是基本的语法结构。这包括变量的声明、数据类型(如int、float、char等)、运算符(如算术...

    linux小试牛刀-项目开发

    "Linux小试牛刀-项目开发"这个主题,很显然,是关于在Linux环境下进行实际项目的经验分享和技能实践。Linux驱动开发是Linux系统编程的一个重要组成部分,它允许硬件设备与操作系统有效地交互。 首先,我们要理解...

    暴雪作业(修改,小试牛刀,大家给点意见[配有音乐)

    暴雪作业(修改,小试牛刀,大家给点意见[配有音乐)

    有机合成工艺小试到中试放大之关键.doc

    《有机合成工艺小试到中试放大之关键》 有机合成工艺从实验室小试到工业化生产,是一个复杂而重要的过程,涉及到多个阶段和技术细节。这一过程中,关键在于工艺条件的优化和放大,确保从研发阶段的技术能够平稳过渡...

    ios hook 小试牛刀(一)

    ios hook 小试牛刀(一)ios hook 小试牛刀(一)ios hook 小试牛刀(一)ios hook 小试牛刀(一)ios hook 小试牛刀(一)ios hook 小试牛刀(一)ios hook 小试牛刀(一)

    jquery小试牛刀

    《jQuery小试牛刀》 在Web开发领域,jQuery是一个不可或缺的JavaScript库,它极大地简化了DOM操作、事件处理、动画效果以及Ajax交互等任务。本文将深入探讨jQuery的核心概念和常见用法,帮助读者更好地理解和运用这...

    小试牛刀.exe

    小试牛刀.exe

    Docker小试牛刀

    各位同学,此篇文档有助于刚接触Docker学员,请根据文档进行实战一下,有助于加深对Docker的理解

    2--[动画小试].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码

    2--[动画小试].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码2--[动画小试].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码2--[动画小试].zip源码scratch2.0 3.0编程项目源文件源码案例素材源...

    刘易斯小试牛刀.nrp

    刘易斯小试牛刀.nrp

    scratch2源码动画小试

    scratch2源码动画小试本资源系百度网盘分享地址

    解密问题课堂小试.sln

    解密问题课堂小试.sln

    HTML5初学小试

    这篇“HTML5初学小试”可能是针对初学者的一篇教程,通过实例来介绍HTML5的基本用法和新特性。 在压缩包文件中,我们有以下四个文件: 1. **ball.html**:这可能是一个展示HTML5 canvas元素的示例,canvas是HTML5...

Global site tag (gtag.js) - Google Analytics