2007-09-14
[07/9/28] 总结一下mootools的瑕疵吧 (持续更新)
这个帖子我会慢慢总结一些不足,欢迎大家补充,并即时更正我的错误 :).
(这些不足如果在新版本里已经修正,我会标出.svn上的版本我不做考虑)
1 each方法无法break.
例子: 找出一个数组中的第一个偶数.
var myarr=[1,2,3,15,5,21,22];
var rs=0;
myarr.each(function(val,idx){
if (val%2 ==0 ) {
rs=val;
return ; //return不是我想要的,我想在这里方便快捷的结束each,咋办?
}
});
目前我想到的是 使用 throw抛出一个异常,不知道各位还有更好的解决方案没.
(当然修改moo源代码可以得到更好的方案)
2 Element对象没有setValue方法.
这个比较不能忍啊 呵呵,想设置页面表单域的值都要自己想办法,不理解为啥!
3 Json.Remote对象里的hardcode.
见代码里的这句大家就明白了:
send: function(obj){
return this.parent(this.url, 'json=' + Json.toString(obj));
}
我想用这个方法,那服务端只能接受名为json的json序列化字符串. 太不灵活了.
4 Json.Remote的send是否应该考虑支持发送多个json串呢?
5. Class 里的一个bug
如果 我要传的第一个参数就是null时 那么整个类机制将失效
例如 一个类的构造方法有两个参数 ,而他又有一个子类 子类也是如此
我在创建子类的时候,如果构造方法的第一个参数我就是要传null,
那么在子类里调用父类的方法将失败.
修改方法 将 null 换成其他的特殊值.
在新版本moo里 用的是 moo定义的 $empty
arguments[0] !== $empty
(这些不足如果在新版本里已经修正,我会标出.svn上的版本我不做考虑)
1 each方法无法break.
例子: 找出一个数组中的第一个偶数.
var myarr=[1,2,3,15,5,21,22];
var rs=0;
myarr.each(function(val,idx){
if (val%2 ==0 ) {
rs=val;
return ; //return不是我想要的,我想在这里方便快捷的结束each,咋办?
}
});
目前我想到的是 使用 throw抛出一个异常,不知道各位还有更好的解决方案没.
(当然修改moo源代码可以得到更好的方案)
2 Element对象没有setValue方法.
这个比较不能忍啊 呵呵,想设置页面表单域的值都要自己想办法,不理解为啥!
3 Json.Remote对象里的hardcode.
见代码里的这句大家就明白了:
send: function(obj){
return this.parent(this.url, 'json=' + Json.toString(obj));
}
我想用这个方法,那服务端只能接受名为json的json序列化字符串. 太不灵活了.
4 Json.Remote的send是否应该考虑支持发送多个json串呢?
5. Class 里的一个bug
var Class = function(properties){
var klass = function(){
return (arguments[0] !== null && this.initialize && $type(this.initialize) == 'function') ? this.initialize.apply(this, arguments) : this;
};
$extend(klass, this);
klass.prototype = properties;
klass.constructor = Class;
return klass;
};
如果 我要传的第一个参数就是null时 那么整个类机制将失效
例如 一个类的构造方法有两个参数 ,而他又有一个子类 子类也是如此
我在创建子类的时候,如果构造方法的第一个参数我就是要传null,
那么在子类里调用父类的方法将失败.
修改方法 将 null 换成其他的特殊值.
在新版本moo里 用的是 moo定义的 $empty
arguments[0] !== $empty
评论
renber
2008-06-25
mootools1.1确实没有setValue,如果有的话,我相信用setProperty是没法替代的,它会考虑到input select span div 等很多可以插入值的元素,但是各个不一样,而且增加这么一个函数比之我们直接用.value或者.setHTML成本要大得多,对了,如果有的话,估计还会跟setHTML重复,完全没必要我认为,如果仅仅是相当于setProperty('value',value)的话,那为什么不直接.value呢
dreamwang
2007-12-18
请问用prototype 可以实现
而mootools必须
有没有更好的方法?
var obj=$("mydiv");
obj.update("<span>beforeObj</span>");
obj.insert("<span>name</span><span>id</span><span>password</span>");
而mootools必须
var obj=$("mydiv");
obj.setHTML("<span>beforeObj</span>");
var a=new Element('span');
a.setText("name");
a.injectInside(obj);
............
有没有更好的方法?
llying
2007-10-06
zhw 写道
fins 写道
这个帖子我会慢慢总结一些不足,欢迎大家补充,并即时更正我的错误 :).
2 Element对象没有setValue方法.
这个比较不能忍啊 呵呵,想设置页面表单域的值都要自己想办法,不理解为啥!
2 Element对象没有setValue方法.
这个比较不能忍啊 呵呵,想设置页面表单域的值都要自己想办法,不理解为啥!
setProperty 应该可以吧, 它就是做这些事的。
非常同意~!
Element.setProperty('value','value')完全可以
可能是mootools疏忽或者不想做重复的事情
fins
2007-09-28
又发现一个重大瑕疵
agile_boy
2007-09-14
2 Element对象没有setValue方法.
确实是的,在Element.Form中,也只是提供了getValue方法
1 关于each,没有break也是可以忍受的啊,毕竟each还不是关键字啊
确实是的,在Element.Form中,也只是提供了getValue方法
1 关于each,没有break也是可以忍受的啊,毕竟each还不是关键字啊
radar
2007-09-14
不修改源码很麻烦啊!
radar
2007-09-14
Array.prototype.each=function(fn){
for ( var i = 0, ol = this.length, val = this[0]; i < ol && fn.call(val,i,val) !== false; val = this[++i] )
{}
}
function aa(index,val){
if(val>2)
return false;
else
alert(val)
}
[1,2,3].each(aa);
for ( var i = 0, ol = this.length, val = this[0]; i < ol && fn.call(val,i,val) !== false; val = this[++i] )
{}
}
function aa(index,val){
if(val>2)
return false;
else
alert(val)
}
[1,2,3].each(aa);
zhw
2007-09-14
fins 写道
这个帖子我会慢慢总结一些不足,欢迎大家补充,并即时更正我的错误 :).
2 Element对象没有setValue方法.
这个比较不能忍啊 呵呵,想设置页面表单域的值都要自己想办法,不理解为啥!
2 Element对象没有setValue方法.
这个比较不能忍啊 呵呵,想设置页面表单域的值都要自己想办法,不理解为啥!
setProperty 应该可以吧, 它就是做这些事的。
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 706274 次
- 性别:

- 来自: 小胖儿的大城

- 详细资料
搜索本博客
我的相册
David Recordon
共 63 张
共 63 张
链接
最新评论
-
EXT 2 绚丽表格 背后的 ...
楼上的真是锐道的好员工啊 dorado整体表现确实不错 但是没有哪个单项可以用 ...
-- by fins -
EXT 2 绚丽表格 背后的 ...
http://www.bstek.com/dorado5/performance ...
-- by hotbarsmu -
[GT-Grid]列表组件 GT-Gr ...
如果一切正常 下周应该会出一个前后台结合的例子 例子已经在编写中了 不过为了 ...
-- by fins -
[GT-Grid]列表组件 GT-Gr ...
fins什么时候会有和服务端结合的版本呢?您可以给个简单的案例吗?谢谢
-- by hgq0011 -
[GT-Grid]列表组件 GT-Gr ...
这个是和ecside完全不同的产品 自然看起来也会面目全非了 呵呵
-- by fins






评论排行榜