Friday, August 08, 2008

element.style.display in firefox3

在mac firefox3中element.style.display = "" 与 element.style.display = "none"一样,如果需要显示此element,则需要用element.style.display = "block"

scope of javascript anonymous function


var foo = "test in global window";
function Constructor() {
this.foo = 'test in Constructor';
this.local = (function() {
alert(this.foo);
return "local";
}).apply(this);
this.globals = (function(){
alert(this.foo);
return "global";
})();
}
new Constructor();

In javascript, scope of anonymous functions is global.
匿名函数中的作用对象是全局的window对象,一般是不需要注意这点,但当在匿名函数中使用使用this就要小心,这个this是指向window的,如上所示可以用apply或者call来指定匿名函数作用于哪个对象上,但匿名函数如果在setTimeout/setInterval中使用的话则需要将this对象用别名如_self/self/_this/that替代后在匿名方法中使用,如下面二个参考文章所示。
Reference:http://yuweijun.blogspot.com/2008/05/test-scope-of-this-in-closure-and-in.html
http://www.dustindiaz.com/scoping-anonymous-functions/

Friday, August 01, 2008

component mixins 说明

component mixins 是将一个特定的组件(一般位于mixins文件夹中,多数是跟js/ajax相关,用于控制组件行为)跟另一个普通组件(位于components文件夹下)集成在一起,形成一个具有二者全部功能的组件。
component mixins 也跟普通组件相似,可以有自己的参数parameters,当它跟普通组件components中定义的参数发生冲突时,以普通组件定义的参数为准。


components:
public class Area {
@Parameter(defaultPrefix = "literal", value = "300")
private String _height;

@Parameter(defaultPrefix = "literal", value = "300")
private String _width;

@Parameter(defaultPrefix = "literal", value = "px")
private String _unit;
}
mixin:
public class EventMixin
{
@Parameter(required = true, defaultPrefix = "literal")
private String event;

@Parameter(defaultPrefix = "literal", value = "pt")
private String _unit;

public String getEventName()
{
return event;
}
}
using in template:
<t:area t:mixins="eventmixin" t:height="200" t:event="click"/>

例子中mixin和component中都有一个叫unit的参数,以component的参数为准,area组件集成了eventmixin,由于其evnet参数是必须提供的,所以在模板中area组件中要提供此参数。