【发布时间】:2011-05-28 19:44:18
【问题描述】:
从一个 XBL 方法,当我需要调用另一个方法时,我喜欢:
<method name="myMethod_1">
<body>
<![CDATA[
// do staff
]]>
</body>
</method>
<method name="myMethod_2">
<body>
<![CDATA[
document.getElementById("thisElementID").myMethod_1();
]]>
</body>
</method>
我想知道有没有办法在不需要元素id的情况下调用本地方法?我试过this.myMethod_1(),但它说该方法不存在。
【问题讨论】:
-
this.myMethod_1() 应该可以工作。您现在执行此操作的方式破坏了 XBL 范式的更大部分 - 您的绑定不再可重用。
-
@Sergey Ilinsky 更难过,因为它不能用 this 调用,它只能在构造函数上工作,而不是在方法上。
-
你能告诉我们调用myMethod_2的代码吗?如果你这样称呼它: document.getElement(...).myMethod_2() 很好,但如果你有类似 someElement.addEventHandler("click", myxbl.myMethod_2,...);这行不通,因为事件目标是这个。
-
@Mihailo 我将其称为我的示例所示。但是,在制作一个简单的示例项目时,它只适用于
this.. 我不知道为什么在我当前项目的方法中它没有.. 我会做一些测试,然后我会回到这里.. -
@Tom - 你实际上并没有回答 myMethod_2 是如何被调用的,你展示了 myMethod_1 是如何被调用的。这对于确定该上下文中的 this 是什么很重要。