#javascript #adaptive-cards
#javascript #адаптивные карты
Вопрос:
Я пытаюсь создать пользовательское действие в адаптивной карте, но не могу его создать. может ли кто-нибудь, пожалуйста, помочь мне
Данные карты
{
"type": "AdaptiveCard",
"version": "1.0",
"body": [
{
"type": "TextBlock",
"size": "Medium",
"weight": "Bolder",
"text": "Custom"
}
],
"actions": [
{
"type": "Action.Alert",
"title": "Click me",
"text": "Hello world!"
}
]
}
Файл TypeScript — action.ts создан заново
import * as AC from "adaptivecards";
export class AlertAction extends AC.Action {
static readonly JsonTypeName = "Action.Alert";
//#region Schema
static readonly textProperty = new AC.StringProperty(AC.Versions.v1_0, "text", true);
@AC.property(AlertAction.textProperty)
text?: string;
//#endregion
getJsonTypeName(): string {
return AlertAction.JsonTypeName;
}
execute() {
alert(this.text);
}
}
и согласно этой ссылке
https://docs.microsoft.com/en-us/adaptive-cards/sdk/rendering-cards/javascript/extensibility
Я не понимаю, куда добавить эту строку кода
AC.GlobalRegistry.actions.register(AlertAction.JsonTypeName, AlertAction);
Это код для рендеринга карты
var jsonTemplate = "some data",
var jsonDate = "some data"
var template = new ACData.Template(jsonTemplate);
var cardPayload = template.expand({
$root: jsonData
});
var adaptiveCard = new AdaptiveCards.AdaptiveCard();
adaptiveCard.onExecuteAction = function(action) {
alert("Ow!");
}
adaptiveCard.parse(cardPayload);
let renderedCard = adaptiveCard.render();
document.body.appendChild(renderedCard);
Я попытался добавить GlobalRegistry следующим образом
import {AlertAction} from '../action' // Action file is a TS file
var adaptiveCard = new AdaptiveCards.AdaptiveCard();
adaptiveCard.onExecuteAction = function(action) {
alert("Ow!");
}
adaptiveCard.GlobalRegistry.actions.register(AlertAction.JsonTypeName, AlertAction)
Я получаю сообщение об ошибке типа «ReferenceError: не удается получить доступ к ‘AlertAction’ перед инициализацией»
Комментарии:
1. Вам нужна строка везде, где вы инициализируете средство визуализации, прежде чем визуализировать карту. AC. в данном случае является экземпляром средства визуализации.
2. Привет @TimCadenbach, я добавил код рендеринга карты выше… этот код рендеринга в js-файле, но строка AC.GlobalRegistry.actions.register(AlertAction. JsonTypeName, AlertAction) необходимо добавить в файл сценария типа в соответствии с документами.. теперь, как мы можем использовать эту строку в файле js.. пожалуйста, помогите мне в этом
3. Прошло много времени с тех пор, как я это пробовал, но, насколько я знаю, вы должны установить его в «var adaptiveCard», Как после onExecuteAction вы устанавливаете действия GlobalRegistry и т. Д. Не могу попробовать это прямо сейчас, но сделаю позже сегодня