2013-02-05 31 views
0

我正在使用Parsley Flex框架創建一個示例MVC。我有一個滑塊控件(mx:HSlider),它將事件分派給模型,以便對滑塊更改進行操作。爲此,我創建了一個自定義事件,並使用香菜選擇器來處理事件。這裏是代碼歐芹MessageHandlers不起作用

//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

我認爲在一些配置或正常事件中有一個錯誤的parsley事件,但在我的代碼中,我正在調度更多的一個事件,我正在寫它們as

[ManagedEvents("a","b","c")] 

但是看完香菜的文件後,我認爲,它應該是

[ManagedEvents("a,b,c")] 

它解決了我的問題。感謝你的回覆。

0

試試這個:

[MessageHandler(selector="msg")] 

你已經錯過了一個右括號。

+0

感謝您的回覆。這是我的一個錯字錯誤,所以我編輯了這個問題。 – ankurtr

+0

好吧,它也可以使歐芹不承認處理程序.. – csomakk

0

在視圖類中,Parsley不會自動「管理」視圖。視圖通常不會添加到Parsley上下文中(除非您專門將它們添加到上下文中)。因爲視圖可以來來去去,所以你不希望歐芹像控制器,動態命令,模型一樣默認管理它們。

爲了讓Parsley管理一個視圖,並因此認識到它需要調用你的消息處理程序,你需要添加一個Parsley <Configure />標籤到視圖。這會使視圖分配一個類型爲「configureView」的事件。在此標記存在之前,您將在視圖添加到舞臺時手動調度此事件。

做這樣的事情在你看來:

<fx:Declarations> 
    <parsley:Configure /> 
</fx:Declarations> 

(在Flex 3的應用程序,你只是<Configure />標籤添加到視圖,也就是說,你不會把它放在一個聲明中你可以在Parsley docs中看到它

+0

<香菜:配置/>已經在我的視圖中。仍然不起作用。 – ankurtr

+0

感謝您展示您的所有代碼:)祝您好運 –

0

您必須將視圖添加到上下文中。 這是唯一缺失的部分。