Как я могу исправить слот ng-repeat, чтобы он отображал области для выбранного блока?Html

Программисты Html
Ответить
Anonymous
 Как я могу исправить слот ng-repeat, чтобы он отображал области для выбранного блока?

Сообщение Anonymous »

Я пытаюсь отобразить области выбранного блока, 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Html»