Я пытаюсь отобразить области выбранного блока, 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
Как я могу исправить слот ng-repeat, чтобы он отображал области для выбранного блока? ⇐ Html
Программисты Html
1772365131
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;
}
Подробнее здесь: [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антехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия