0
그래서이 TitleWindow 기반 플렉스 응용 프로그램은이 창에 정적 함수로 작성된이 창을 호출합니다. 이이 기업의 요구를 작성하거나 데이터 그리드에서 편집 할 때와 같은 모습입니다 :내 패턴이 잘못되었습니다. 어떻게 건조하게합니까?
private function incluir():void {
NavioForm.incluir(dg.dataProvider);
}
private function atualizar():void {
NavioForm.atualizar(dg.dataProvider, dg.selectedIndex);
}
그것은이 측면에서 완벽하게 작동합니다.
하지만 정적 기능을 사용하기 때문에 우리는 아래의 예에서 볼 수 있듯이, 코드는, 약간 반복지기 시작한다 :
[스크립트 a를 CRUD 형태의 태그 (incluir == 포함, atualizar == 업데이트 excluir == 삭제) 다른 CRUD 형태의
...
[Bindable] private var navio:Navio;
public static function incluir(dataList:IList):void {
var form:NavioForm = new NavioForm();
form.action = FormWindow.ACTION_NEW + Navio.name;
form.navio = new Navio();
form.navio.lastUpdate = new Date();
form.result = function():void {
PortoService.obj.persistirNavio(form.navio).result(function(navio:Navio):void {
dataList.addItem(navio);
form.close();
}).fault(function(event:FaultEvent):void {
if(event.fault.faultString == 'duplicate key') {
Util.showError("This vessel's IMO is already present in our database.");
} else throw event.fault;
});
};
PopUp.add(form);
}
public static function atualizar(dataList:IList, index:int):void {
var form:NavioForm = new NavioForm();
form.action = FormWindow.ACTION_UPDATE + Navio.name;
form.imoRecieved = true;
form.navio = dataList[index];
PortoService.obj.obter(Navio, form.navio.key).result(function(navio:Navio):void {
form.navio = navio;
form.navio.lastUpdate = new Date();
});
form.result = function():void {
PortoService.obj.persistir(form.navio).result(function(navio:Navio):void {
dataList[index] = navio;
form.close();
}).fault(function(event:FaultEvent):void {
if(event.fault.faultString == 'duplicate key') {
Util.showError("This vessel's IMO is already present in our database.");
} else throw event.fault;
});
};
PopUp.add(form);
}
...
스크립트 태그 : 그래서
...
[Bindable] private var vesselType:VesselType;
public static function incluir(dataList:IList):void {
var form:VesselTypeForm = new VesselTypeForm();
form.action = FormWindow.ACTION_NEW + VesselType.name;
form.vesselType = new VesselType();
form.result = function():void {
CoreService.obj.persistir(form.vesselType).result(function(type:VesselType):void {
dataList.addItem(type);
form.close();
});
};
PopUp.add(form);
}
public static function atualizar(dataList:IList, index:int):void {
var form:VesselTypeForm = new VesselTypeForm();
form.action = FormWindow.ACTION_UPDATE + VesselType.name;
form.vesselType = Util.clone(dataList[index]);
form.result = function():void {
CoreService.obj.persistir(form.vesselType).result(function(type:VesselType):void {
dataList[index] = type;
form.close();
});
};
form.deleteClick = function():void {
CoreService.obj.excluir(form.vesselType.key).result(function():void {
dataList.removeItemAt(index);
form.close();
});
};
PopUp.add(form);
}
, 디자인 패턴이나이 일을하는 다른 방법이 있습니까?
양식이 정적 인 요구 사항입니까? – ethrbunny
아니요, 그렇지 않습니다. 그것은 나의 첫 번째 실수였다. 좋은 생각 일 것이라고 생각했다. – GxFlint
'incluir'등의 'form'기본 클래스를 가질 수있는 것 같습니다. 그런 다음 거기에서 빌드하는 하위 클래스가 있습니다. – ethrbunny