数据绑定的主要示例

时间:2010-09-09 01:29:09

标签: javascript wpf flex data-binding key-value-observing

我在JavaScript中实现了一个只提供对象之间数据绑定的准系统框架。数据绑定可以是单向或双向的,并且可能在某些属性上绑定多个对象。有几种数据绑定解决方案可用于各种语言,我正在努力了解所有世界中最好的,以便从中挑选功能集。到目前为止,我已经研究了以下提供绑定的框架:

请随意编辑问题并添加支持绑定的其他框架(如果缺少这些框架)。

您认为哪些数据绑定功能在您选择的相应框架中极具价值?该框架的目标是尽可能多地消除胶水代码。另外,有没有关于这个主题的研究论文我可以咀嚼?

1 个答案:

答案 0 :(得分:1)

还要看看其中最古老的一个:Tk工具包(通常与tcl相关联,但也可以在其他语言中使用)。在Tk中,更新GUI中的值通常只需更新变量:

set foo "Hello" ;# just a simple variable

# Create a label widget displaying "Hello"
pack [label .l -textvariable foo]

# Now change "Hello" to "Goodbye"
set foo "Goodbye"

或者更为复杂的例子,10秒倒计时小部件:

set countdown 10
pack [label .count -textvariable countdown]

proc tick {} {
    incr countdown -1
    if {$countdown > 0} {
        after 1000 tick
    }
}
tick

实际上,该功能是通过trace命令从tcl语言本身派生出来的:

# A simple auto-incrementing variable:

set foo 0
proc autoIncrement {varname args} {
    incr $varname
}
trace add variable foo read {autoIncrement foo}

# now every time foo is read it increments itself by 1

当然,您不能指望所有语言都具备此功能。您也可以使用setInterval()通过轮询来模拟它。 Tk的做法让我觉得最自然。