#5 Passing anonymous objects as parameters with turnOn
Pass function the Module Id as parameter with turnOn
This page creates a anonymous object and sets it on a div. turnOn then passes this attribute to a JavaScript function, which identifies the element with a queryselector and performs DOM manipulations.
In this tutorial you'll learn how to:
-
Create a anonymous object in c#
-
Pass it's data to a JavaScript function
Look at the text below to see the effect.
turnOn hasn't started yet.
#5 Passing anonymous objects as parameters with turnOn
@inherits Custom.Hybrid.Razor14
@using ToSic.Razor.Blade;
<!-- unimportant stuff, hidden -->
Pass function the Module Id as parameter... <!-- unimportant stuff, hidden -->
<br>
@* Inject attribute into DIV, to make it accessible for query *@
<div id="turn-on-example">
turnOn hasn't started yet.
</div>
@{
// Use the PageService to activate turnOn
Kit.Page.Activate("turnOn");
// Create an anonymous object and define example settings
var exampleObject = new {
domId = "turn-on-example",
style = new {
backgroundColor = "mediumpurple",
height = 100,
width = 400
}
};
}
@* Passes the exampleObject as parameter in a JSON format and executes the window.turnOnTutorial120.init function *@
<turnOn turn-on='{
"run": "window.turnOnTutorial120.init()",
"data": @Html.Raw(Kit.Json.ToJson(exampleObject)) }'></turnOn>
<script src="@App.Path/turn-on/_120-anonymous-object.js"></script>
<!-- unimportant stuff, hidden -->
(() => {
// Data gets passed as a single object, so we need to deconstruct it.
function init({domId, style}) {
// The element gets found in the DOM by a querySelector with the passed attribute
const foundElement = document.querySelector(`#${domId}`)
// apply passed settings on DOM element
foundElement.style.backgroundColor = style.backgroundColor;
foundElement.style.height = `${style.height}px`;
foundElement.style.width = `${style.width}px`;
// Parameters get displayed in the DOM
foundElement.innerText = `turnOn has passed this data: ${JSON.stringify({domId, style})}`;
}
const tt = window.turnOnTutorial120 = window.turnOnTutorial120 || {};
tt.init = tt.init || init;
})();