我正在使用Parsley Framework of Flex创建一个示例MVC。我有一个滑块控件(mx:HSlider),它将事件调度到模型,以便在滑块更改时执行某些操作。为此我创建了一个自定义事件,我使用欧芹选择器来处理事件。这是代码
//Event
class MyEvent extends Event
{
public static const MSG="msg";
//constructor, clone method and two fields
}
//View
<fx:Metadata>
[Event name="msg" type="pack1.MyEvent"]
[ManagedEvents("msg")]
</fx:Metadata>
<fx:Declaration>
<parsley:Configure/>
</fx:Declaration>
public function onSliderChange(event:SliderEvent):void
{
dispatchEvent(new MyEvent(MyEvent.MSG,event.thumbIndex,event.value);
}
//Model
[MessageHandler(selector="msg")]
public function doSomething(event:MyEvent)
{
//code
}
现在,事件成功调度,但不知道消息处理程序是否被调用。 这可能有什么不对?谁能让我知道什么是问题?任何形式的帮助将不胜感激。提前谢谢。
注意:我的上下文正在初始化,我的模型也被注入了。但事件向我展示了一些奇怪的行为。它只是没有被派遣到那些处理程序的模型。
答案 0 :(得分:0)
试试这个:
[MessageHandler(selector="msg")]
你错过了一个结束括号。
答案 1 :(得分:0)
在视图类中,Parsley不会自动“管理”视图。视图通常不会添加到Parsley上下文中(除非您专门将它们添加到上下文中)。因为视图可以来去,所以你不希望Parsley默认管理它们,就像你使用控制器,动态命令,模型等一样。
要让Parsley管理视图,并因此认识到它需要调用您的消息处理程序,您需要向视图添加Parsley <Configure />
标记。这使得视图调度具有“configureView”类型的事件。在此标记存在之前,您将在将视图添加到舞台时手动调度此事件。
在您的观点中执行以下操作:
<fx:Declarations>
<parsley:Configure />
</fx:Declarations>
(在Flex 3应用程序中,您只需将<Configure />
标记添加到视图中,也就是说,您不会将其放在声明标记内。您可以在{{3 }}
答案 2 :(得分:0)
我认为在一些配置中或在使用欧芹事件的正常事件中存在错误但在我的代码中我从类中调出了更多的一个事件而我正在将它们写为
[ManagedEvents("a","b","c")]
但是在阅读了欧芹文件之后我发现它应该是
[ManagedEvents("a,b,c")]
它解决了我的问题。感谢您的所有回复。
答案 3 :(得分:0)
您必须将视图添加到上下文中。 这是唯一缺失的部分。