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());
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值