私は最近、カスタムレポートFlexでUIのためのプロジェクトを完了しました。今、元のUIの本質的に「軽い」バージョンである新しいアプリケーションを作成する作業があります。元のアプリケーションに含まれるいくつかのオプションだけが含まれます。また、別のアプリケーションである必要があります。いくつかのコンポーネントを共有する複数のCairngorm MVCプロジェクトをどのように構築すればよいですか?
私は私のコードを複製したくないので、私は両方のアプリケーションで共有できる新しいライブラリに、元のアプリケーションからのクラスの束を移動することを計画しています。しかし、私はMVC環境でこの作業を行う方法を理解しようとしています。例えば
、私は、ユーザーが複数の項目をフィルタリングすることができますAccordionコンポーネントを持っています。各アコーディオンの子は、2つのリストを持つカスタムコンポーネントのインスタンスです(選択できるエンティティ用、ユーザーが選択したエンティティ用の1つ)。各子コンポーネントには、モデルにバインドされたプロパティと、Cairngormイベントを呼び出す関数があります。ここで
は簡単な例です:
FiltersAccordion.mxml:
<?xml version="1.0" encoding="utf-8"?>
<mx:Accordion xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:local="*">
<mx:Script>
<![CDATA[
import model.ModelLocator;
[Bindable]
private var __model:ModelLocator = ModelLocator.getInstance();
]]>
</mx:Script>
<local:GenreFilter availableGenres="{__model.availableGenres}"
selectedGenres="{__model.selectedGenres}" />
<local:ArtistFilter availableArtists="{__model.availableArtists}"
selectedArtists="{__model.selectedArtists}" />
<local:LabelFilter availableLabels="{__model.availableLabels}"
selectedLabels="{__model.selectedLabels}" />
</mx:Accordion>
GenreFilter.mxml:
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import control.events.AddGenresEvent;
import control.events.RemoveGenresEvent;
import model.ModelLocator;
[Bindable]
private var __model:ModelLocator = ModelLocator.getInstance();
[Bindable]
public var availableGenres:ArrayCollection;
[Bindable]
public var selectedGenres:ArrayCollection;
private function addGenresButton_clickHandler():void
{
var event:AddGenresEvent = new AddGenresEvent();
event.availableGenres = availableGenres;
event.selectedGenres = selectedGenres;
event.itemsToAdd = availableGenresList.selectedItems;
event.dispatch();
}
protected function removeGenresButton_clickHandler():void
{
var event:RemoveGenresEvent = new RemoveGenresEvent();
event.availableGenres = availableGenres;
event.selectedGenres = selectedGenres;
event.itemsToRemove = selectedGenresList.selectedItems;
event.dispatch();
}
]]>
</mx:Script>
<mx:List id="availableGenresList" dataProvider="{availableGenres}" />
<mx:VBox>
<mx:Button id="addButton" icon="{rightArrowIcon}" width="22"
height="22" click="addGenresButton_clickHandler();" />
<mx:Button id="removeButton" icon="{leftArrowIcon}" width="22"
height="22" click="removeGenresButton_clickHandler();" />
</mx:VBox>
<mx:List id="selectedGenresList" dataProvider="{selectedGenres}"
width="100%" height="100%" allowMultipleSelection="true" />
</mx:HBox>
ArtistFilter.mxmlとLabelFilter.mxmlかなりのGenreFilter.mxmlと同じデザインですが、その特定のイベントに使用します。
だから私はこれをどのようにしたらよいでしょうか?私のモデルを共有ライブラリに移動するのは意味がありません。基本的には、ライブラリにViewコンポーネントを作成するだけです。私はここで私のロッカーを完全にオフにしていますか?あなたの意見はあなたのモデルに結び付けられている - ケアンゴームの大きな欠陥の一つだ
あなたは頭の上に釘を打つ:ModelLocatorは変装だけでグローバル変数です。 –