看来,有两种情况,其中分配到通过@Bindable
一个结合常规属性不调用监听器:例外Groovy的绑定/ vetoable属性更改侦听
(1)在其中该属性内进行分配的情况下类本身,如this.prop = newval
,或者简单地说,prop = newval
(2)的情况下属性的值不会改变obj.prop = oldval
有没有办法解决?理想情况下,它将支持简单的(.)prop=
语法。
代码示例:
import java.beans.*
import groovy.beans.*
int changes = 0
def obj = Binding.newInstance()
obj.propertyChange = { changes++ }
obj.prop = "1st change" // change recorded
obj.twoChanges() // no changes recorded
obj.prop = obj.prop // no change recorded
assert changes == 4 // fails: changes is 1
class Binding {
@Bindable String prop
def twoChanges() {
prop = "2nd change"
this.prop = "3rd change"
}
}
你可以提供一个示例代码:除非该属性设置为相同的值(3出检测到4种变化),这适用于一切? – Opal