如何在我的模型和flex组件之间进行通信?

时间:2011-03-27 07:57:39

标签: actionscript-3 model flex4 components

我正在尝试使用Probertson的SQLRunner类来连接到SQLite数据库的我的Actionscript 3.0模型与我的flex组件进行通信;我真的不确定如何最好地实现这一目标。我已经解决了一些例子,但我不知道告诉我的组件SQL查询结果的最简单方法。有人有什么建议吗?

以下是一些代码,让您了解我现在正在使用的内容。

组件

<fx:Declarations>
    <model:Patient id="editedPatient" FirstName="{FirstName.text}" /> 
</fx:Declarations>  

<fx:Script>
    <![CDATA[
        /*imports*/
        protected var _patient:Patient;

        public function get patient():Patient
        {
            return _patient;
        }

        [Bindable]
        public function set patient(value:Patient):void
        {
            _patient = value;
        }

        private function creationCompleteHandler(event:FlexEvent):void{
            _patient.getPatient(currentUser);
        }

        protected function save_clickHandler(event:MouseEvent):void
        {
            _patient.update(editedPatient);
        }

    ]]>
</fx:Script>

<s:TextInput id="FirstName" text="{patient.FirstName}" />
<s:Button id="save" label="save" click="save_clickHandler(event)" />

模型

    public function getPatient(PatientId:int):void {
        var stmt:String = new String();

        stmt = "SELECT * FROM Patient WHERE PatientID= @PatiendId;";
        sqlRunner.execute(stmt, {PatientId:PatientId}, loadPatient_result, Patient);

    }

    private function loadPatient_result(result:SQLResult):void
    {
        if (result.data != null && result.data.length > 0)
        {
            var Patient:Patient = result.data[0];
        }

    }

1 个答案:

答案 0 :(得分:1)

你可以做一些事情......

首先,我会创建一个Model that follows the Singleton pattern,以便您可以绑定任何视图或组件中的任何数据更改。

其次,我会在您调用的 loadPatient_result 方法中更新该单例模型。

如果您想要从结果和组件中解除耦合,您可以dispatch a custom event manually包含患者记录,让组件监听该类事件并相应地更新自身。或者让该视图监听该事件并相应地更新。

你走在正确的轨道上。我认为Singleton就是你所需要的。