在将两个不同的组件添加到某种形式的数据结构中并将它们转储出来时,我在 Coldfusion 中发现了一个奇怪的错误。
出于这个问题的目的,我简化了我的代码。我有组件 A 和组件 B,它们都有一个属性、一个构造函数和一个函数。
我创建了一个 A 的实例和一个 B 的实例。当我分别转储这些实例时,我看到了正确的元数据。
但是,当我将两个实例添加到数据结构(第一个插槽中的组件 B,第二个插槽中的 A)时,似乎插槽 1 中的实例中的方法在插槽 2 中的实例中重复,即使它们是不同的对象. 即,我看到 CompBFunction、GetCompBProp、SetCompBProp 列为 Comp A 的方法。但是这些属性看起来是正确的。
值得一提的是,我无法在 Comp A 上调用 Comp B 的方法 - 这似乎是一个显示问题。我尝试在我的对象“a”上调用 CompBFunction,但它按预期失败。
在这里的任何帮助将不胜感激。我知道这不是一个大问题 - 但是当它们不存在时在这里看到这些方法可能会产生误导。在我的代码中有很多实例,我想建立一个混合组件的数据结构。
抱歉,如果以前有人问过这个问题 - 我搜索了高低,但找不到任何信息。我正在使用CF9。
这是我的示例代码:-
组分 A
component name="CompA" output="false" cache="false" accessors="true" {
property name="CompAprop" type="Numeric" getter="true" setter="true";
public CompA function init() output="false" {
return this;
}
public String function CompAFunction() output="false" {
return "All";
}
}
B组份
component name="CompB" output="false" cache="false" accessors="true" {
property name="CompBprop" type="Numeric" getter="true" setter="true";
public CompB function init() output="false" {
return this;
}
public String function CompBFunction() output="false" {
return "All";
}
}
索引.cfm
<cfset a = new CompA() />
<cfset b = new CompB() />
<cfset test = ArrayNew(1) />
<cfset test[1] = b />
<cfset test[2] = a />
<cfdump var="#test#" /> <!--- METHODS FOR B APPEAR IN METADATA FOR A --->
<cfdump var="#test[1]#" /> <!--- METADATA CORRECT --->
<cfdump var="#test[2]#" /> <!--- METADATA CORRECT --->
<cfabort />
图片