我已经很好地利用了自定义控件的自定义属性。有没有定制方法?假设我希望在CC中发生一些事情。对话框扩展的show方法就是一个很好的例子。如果我有一个带有扩展对话框的cc,我希望我的自定义控件有一个Show方法,它将最终用户程序员与扩展页Shoe方法隔离开来。
有没有办法做到这一点?
发布于 2012-04-10 06:25:13
在运行时,所有自定义控件元素都将成为UIIncludeComposite类的实例;因此,您可以针对任何给定的控件实例调用许多内置方法,但无法指定自定义方法,而不是自定义属性。
然而,至少有两种方法可以达到你想要的结果:
例如:
<myCC id="myCustomControl" API="#{someObject}" />假设#{someObject}解析为包含一个show()方法,您可以通过获取已传递给控件的实例的句柄来调用该方法:
var cc = getComponent("myCustomControl");
var ccProperties = cc.getPropertyMap();
var ccAPI = ccProperties.get("API");
ccAPI.show(cc);在上面的示例中,我将实际的Custom Control传递给show()方法,因为对象本身并不知道它被传递到的Custom Control。因此,例如,如果该方法需要获得其子对象的句柄来切换其呈现的属性,那么它需要一些其他方法来确定其上下文。
发布于 2012-04-10 16:57:42
Tim的传入对象的解决方案就是一个很好的解决方案。
我脑海中突然浮现出一些东西,可以很容易地让一个属性类似于控件上呈现的属性。传入一个值,然后在自定义控件中根据它的值做一些事情。如果为true,则显示对话框,否则隐藏,在运行时在XPage中修改此值并部分刷新控件,逻辑将由此重新运行,控件将显示等。
发布于 2012-04-11 14:53:01
另一种解决方案是在您的自定义控件中包含一个JavaScript库,该库提供函数(您的自定义控件方法),其中您必须传入自定义控件实例的id。
https://stackoverflow.com/questions/10074316
复制相似问题