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

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

Сообщение Anonymous »

Я пытаюсь отобразить области для выбранного блока, WizardStep является родительским контроллером, а Option Selector - это контроллер ребенка. Я отправляю выбранное имя и значение выбранной опции родительскому контроллеру, чтобы мы могли затем отобразить содержимое этой выбранной опции. Тем не менее, пробег слота NG на шаге мастера HTML не отображает блок. Как мы можем это исправить?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
});
};
});
< /code>
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;
}

< /code>
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)));
});
});
< /code>
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»