SmartGWT 之 神秘的 xxx is not a function

在 calendar 当中,增加了一些 EventEditor Fields。

其中有两个 SelectItem,想用这两个 SelectItem 来做联动,但是怎么

也不成功。设置的 criterian 都不起作用。于是想偷懒,其中一个 SelectItem

变化时,把另外一个 disable掉,于是调用 otherSelectItem.disable()方法。

这时候,出现了一个异常,错误是 disable is not a function。

 

这个时候,不管是 disable 还是 hide,都是这样的一个异常。于是回忆以前曾经

也出现过这种错误,那时候是使用 grid 的 fetchData方法,而那个时候 grid 还

没有初始化,于是 fetchData 方法自然不存在。

 

同样的推理一下,莫非这个时候, selectItem 都还没有初始化?想到 Calendar

的特殊性,它不是我创建的一个 form,而是我使用 setEventEditorFields( ...) 来

设置的。也就是说,我设置的 field 都初始化了,但是这个可能只是一个模板,所以

在运行期来说,其实它是按照我的这个模板,另外创建了一个实例。而我创建的这个

field,在客户端根本就没有初始化。

 

想明白了这一点,事情就好办了。在 onChanged事件当中,可以获取到当前的form

然后使用当前的form来获取相应的field,再进行disable,就ok了。

 

可见在使用 SmartGWT的时候,很多实例的状态,是非常需要注意的。

印象中以前使用 Echo 的时候,也有类似的情况。以前似乎是 Grid 的 Editor 出现过这样的问题。

 

 

另外, 现在 form.getField,只能返回 TextItem。如果想要得到 SelectItem,必须这样做:

 

SelectItem item = new SelectItem( event.getForm().getField("other").getJsObject());
 

 

你可能感兴趣的:(function)