请指教这个flex noob。我的main.mxml中有一个remoteobject。我可以从main.mxml上的init()函数调用服务上的函数,我的java调试器会触发断点。当我将remoteobject声明和函数调用移动到自定义组件(在main.mxml中声明)时,java-side上的远程函数不再被调用,没有触发断点,没有错误,沉默。
怎么会这样?没有拼写错误,或类似的东西。我该怎么做才能搞清楚?
mxml代码:
&#060 mx:RemoteObject id =“myService” 目的地= “remoteService” endpoint =“$ {Application.application.home} / messagebroker / amf”&#062 &#060 / mx:RemoteObject&#062
函数调用只是'myService.getlist();'
当我将其移动到自定义组件时,我导入mx.core.Application;所以编译器不会喊叫
我的孩子组件:child.mxml
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()" >
<mx:Script>
<![CDATA[
import mx.core.Application;
public function init():void {
helloWorld.sayHello();
}
]]>
</mx:Script>
<mx:RemoteObject id="helloWorld" destination="helloService" endpoint="$(Application.application.home}/messagebroker/amf" />
<mx:Label text="{helloWorld.sayHello.lastResult}" />
</mx:Panel>
我的main.mxml:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()" xmlns:test="main.flex.*" >
<mx:Script>
<![CDATA[
[Bindable]
public var home:String;
[Bindable]
public var uName:String;
public function init():void {
//passed in by wrapper html
home = Application.application.parameters.appHome;
uName = Application.application.parameters.uName;
}
]]>
</mx:Script>
<test:child />
</mx:Application>
答案 0 :(得分:1)
子组件在父级之前调用creationComplete(因此home为null)。解决方案是在读取数据后从父节点抛出事件(如InitDataCompleted),并在子组件中侦听此事件(因此不要依赖于子节点中的creationcomplete)。
然而,比这更重要的是你如何在将来诊断出这类问题。像代理(例如Charles)这样的简单工具应该有所帮助。
答案 1 :(得分:0)
您的端点值
endpoint="$(Application.application.home}/messagebroker/amf"
你为什么使用$(在Application.application之前......这应该是{as in:
endpoint="{Application.application.home}/messagebroker/amf"