2015-07-21 67 views
0

只有当View中的某个字段的值由用户更改时,我需要在我的ViewController中执行一些代码,从而触发change事件。更改事件 - 是否有办法区分用户更改和程序更改?

问题是,在控制器的某些地方,我使用this.getViewModel().set('name', 'value')这也触发change。在这些情况下,如果以编程方式更改值,我不想执行由事件触发的代码。 suspendEvents()不起作用,似乎there's a bug这是很长一段时间没有得到修复。 (它说[FIXED],但人们仍然抱怨说它不起作用)。

那么有没有办法来检测这个改变是由我(编程)还是用户?

我正在使用ExtJS 5.1。

回答

0

您的视图可能触发自定义事件,该事件会将您的用户更改与程序化事件分开。

如果您可以在Sencha小提琴上提供一个短的可运行示例,它会更容易帮助。

0

Field mixin有一个私人财产,内部用于避免发射change事件。 这是一个数字标志,因此将其设置为1应该这样做。基于mixin,你可以做类似:

me.suspendCheckChange++; 
this.getViewModel().set('name', 'value') 
me.suspendCheckChange--;