Я пытаюсь отобразить области выбранного блока, WizardStep является родительским контроллером, а optionSelector — дочерним контроллером. Я отправляю выбранное имя и значение выбранной опции родительскому контроллеру, чтобы мы могли затем отобразить содержимое этой выбранной опции. Однако слот ng-repeat в html шаге мастера не отображает блок. как мы можем это исправить?
optionSelector.controller.js
angular.module("umbraco").controller("optionSelectorController", function ($scope, selectionService) {
var vm = this;
vm.propertyEditorForm = $scope.propertyForm;
vm.blockEditorApi = $scope.blockEditorApi;
vm.depth = $scope.depth || 0;
vm.model = $scope.model;
vm.block = vm.model.block;
vm.select = function (block) {
console.log("Selected Option:", block);
selectionService.setSelected({
fieldName: vm.block.data.fieldName,
fieldValue: block.$block.data.fieldValue
});
};
});
optionSelector.html
Selected
Select
.options {
border-top: 3rem solid aqua;
width: 100%;
}
.option-selector {
display: flex;
flex-direction: row;
}
.umb-block-grid__layout-container {
display: flex !important;
}
wizardStep.controller.js:
angular.module("umbraco").controller("wizardStepController", function ($scope, selectionService, blockEditorService) {
var vm = this;
vm.model = $scope.model;
vm.block = vm.model.block;
vm.title = vm.block.data.title;
vm.description = vm.block.data.description;
vm.additionalInfo = vm.block.data.additionalInfo;
vm.propertyEditorForm = null;
vm.blockEditorApi = null;
vm.layoutColumns = 12;
vm.depth = 0;
function circularReplacer(obj) {
let seen = new WeakSet();
return function (key, value) {
if (typeof value === "object" && value !== null) {
if (seen.has(value)) return "[Circular]";
seen.add(value);
}
return value;
};
}
selectionService.onSelect(function (data) {
console.log("Received selected option:", data);
const { fieldName, fieldValue } = data;
vm.selectedBlock = null;
for (const outerArea of vm.block.layout.areas || []) {
for (const parentItem of outerArea.items || []) {
const parentBlock = parentItem.$block;
if (!parentBlock?.data?.fieldName) continue;
for (const innerArea of parentBlock.layout.areas || []) {
for (const childItem of innerArea.items || []) {
const childBlock = childItem.$block;
const childValue = childBlock?.data?.fieldValue;
if (parentBlock.data.fieldName === fieldName && childValue === fieldValue) {
vm.selectedBlock = childBlock;
console.log("Selected block layout:", vm.selectedBlock.layout);
$scope.$applyAsync();
vm.selectedTitle = childBlock.data.title;
vm.selectedDescription = childBlock.data.description;
vm.fieldValue = childValue;
break;
}
}
if (vm.selectedBlock) break;
}
if (vm.selectedBlock) break;
}
if (vm.selectedBlock) break;
}
console.log("Matched block:", JSON.stringify(vm.selectedBlock, circularReplacer(vm.selectedBlock)));
});
});
wizardStep.html
.wizard-step__content {
box-sizing: border-box;
}
Подробнее здесь: https://stackoverflow.com/questions/795 ... selected-b