최근에는 많은 관계를 관리하기위한 UI를 구현해야한다는 요구 사항이있었습니다. Ward Bell은 Angular 및 Breeze와 함께 1-m-1을 사용하여 구현하는 방법을 보여주는 this plunker을 친절하게 제공했습니다.Breeze 1-m-1 in HotTowel 각주 로컬 저장
내 응용 프로그램의 디자인은 주로 (특히 datacontext와 로컬 저장소) John Papa의 최근 Pluralsight 코스를 기반으로합니다. 나는 내 업데이트한다는 점에서, 서버에서 데이터를 가져 오기 위해 응용 프로그램을 강제로 때 워드의 예를 참조하여 내 앱 BusUnit = 영웅과 치수 = 전원 (에서
.
모든 것이 잘 작동하는 것 같군 비즈니스 단위의 크기가 올바르게 반영됩니다. 지금 직면 한 문제는 페이지에서 뒤로 이동하여 다시 로컬 저장소에서 데이터를 가져 오는 경우입니다.이 경우 : 이전에 새 측정 기준을 추가 한 경우
- 사업부에게 모든 것은 괜찮습니다. 그러나 이전에 사업장으로 표시된 경우
- 단위의 삭제 및 저장에 대한 차원이 여전히 해당 비즈니스 단위에 대해 나타납니다.
이 처음 사업 부문과 차원 얻는다 컨트롤러 코드 :
function getdboardStructure() {
var busUnitsPromise = datacontextSvc.busUnits.getByDboardConfigId(vm.dboardConfig.id);
var dimensionsPromise = datacontextSvc.dimensions.getByDboardConfigId(vm.dboardConfig.id);
$q.all([busUnitsPromise, dimensionsPromise])
.then(function (values) {
vm.busUnits = values[0];
vm.dims = values[1];
createBusUnitVms();
//vm.currentBusUnitVm = vm.busUnitVms[0]; // not required as using accordion instead of drop-down
vm.hasChanges = false;
});
}
이가 준비 내 컨트롤러에 코드를 저장 :
function applyBusUnitDimensionSelections(busUnitVm) {
var busUnit = busUnitVm.busUnit;
var mapVms = busUnitVm.dimensionMapVms;
var dimensionHash = createBusUnitDimensionHash(busUnit);
mapVms.forEach(function (mapVm) {
var map = dimensionHash[mapVm.dimension.id];
if (mapVm.selected) {
if (!map) {
datacontextSvc.busUnits.addBusUnitDimension(busUnit, mapVm.dimension)
.then(function() {
});
}
} else {
if (map) {
datacontextSvc.markDeleted(map);
}
}
});
}
이가이다 내 컨트롤러에서 저장을 실행하는 코드 :
function save() {
if (!canSave()) {
return $q.when(null);
}
vm.isSaving = true;
vm.busUnitVms.forEach(applyBusUnitDimensionSelections);
return datacontextSvc.save().then(function (saveResult) {
vm.isSaving = false;
trapSavedDboardConfigId(saveResult); // not relevant to use case
}, function (error) {
vm.isSaving = false;
});
}
function markDeleted(entity) {
return entity.entityAspect.setDeleted();
}
그리고 마지막으로이 사업을 얻을 수있는 저장소 코드는 다음과 같습니다이 삭제 된 항목을 표시 내 데이터 컨텍스트 코드가
function addBusUnitDimension(busUnit, dimension) {
var newBusUnitDimension = this.em.createEntity(busUnitDimension);
newBusUnitDimension.busUnitId = busUnit.id;
newBusUnitDimension.dimensionId = dimension.id;
return this.$q.when(newBusUnitDimension);
}
입니다 : 14,이 새로운 busUnitDimension 엔티티를 추가 내 저장소의 코드는 유닛과 그 조인 테이블 엔티티 :
function getByDboardConfigId(dboardConfigId, forceRefresh) {
var self = this;
var predicate = pred.create('dboardConfigId', '==', dboardConfigId);
var busUnits;
if (self.zStorage.areItemsLoaded('busUnits') && !forceRefresh) {
busUnits = self._getAllLocal(entityName, orderBy, predicate);
return self.$q.when(busUnits);
}
return eq.from('BusUnits')
.expand('BusUnitDimensions')
.where(predicate)
.orderBy(orderBy)
.using(self.em).execute()
.to$q(succeeded, self._failed);
function succeeded(data) {
busUnits = data.results;
self.zStorage.areItemsLoaded('busUnits', true);
self.zStorage.save();
//self.logSuccess('Retrieved ' + busUnits.length + ' business units from server', busUnits.length, true);
return busUnits;
}
}
존의 코스 예제에서 출발 한 것은 내가 비즈니스를 얻는 데 사용하는 기능에서 확장을 사용하고 있다는 것입니다. 서버의 단위와 나의 가설은 이것이 캐시가 삭제되지 않고 페이지를 새로 고침 할 때마다 서버에가는 바람과 관련이 있다는 것입니다. 그리고 이것은 또한 오류와 관련이 있습니다. 내가 멀어 질 때 받는다. 그러면 그 페이지로 되돌아 간다.
누구든지 제안 할 수 있습니까?
나는 당신이 무엇을 요구하고 있는지 이해하지 못했지만,이 주제에 대해 질문 한 많은 질문들과 압도적 인지지를 감안할 때 산들 바람을 유지하는 회사로부터 유료 지원을 들여다 볼 것을 제안합니다. 당신은 나처럼 일반 대중을 따르기가 어려운 고도로 맞춤화 된 시나리오의 영역으로 모험심을 가졌습니다. –
나는 당신의 요지를 가지고 있지만, 나의 견해는이 주제는 많은 SO 사용자들에게 흥미가있을 것이며, 여기에 질문을 게시하면 비슷한 요구 사항을 가진 사람들에게 가치를 제공 할 것이라는 것이다. 요구 사항은 일반적인 스레드 일 수 있지만 질문은 모두 요구 사항을 충족시키는 여러 측면과 관련이 있습니다. – zpydee
하지만 아직 어떤 공통 스레드, 요구 사항 또는 다른 것에 대해서도 알지 못합니다. –