Я пытаюсь отобразить области для выбранного блока, 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
Как я могу исправить перезапись слота, чтобы отобразить области для выбранного блока? ⇐ Html
Программисты Html
1744711152
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;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79574867/how-can-i-fix-the-slot-ng-repeat-so-it-will-display-the-areas-for-the-selected-b[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия