Updating views

You can update views inside of a component and outside.

Update view 1

Below, I will show you some ways you can update view content outside of the view.

let stratox = new Stratox("#app");

const itemA = stratox.view("ingress#itemA", {
    headline: "Lorem ipsum dolor 1",
    content: "Lorem ipsum dolor sit amet",
});

const itemB = stratox.view("ingress#itemB", {
    headline: "Lorem ipsum dolor 2",
    content: "Lorem ipsum dolor sit amet",
});

stratox.execute();

const myBtn = document.getElementById("update-headline-btn");
myBtn.addEventListener("click", function (e) {
    e.preventDefault();
    itemA.set({ headline: "Headline 1 been updated!" }).update();
    itemB.set({ headline: "Headline 2 been updated!" }).update();
});

Result:

Update example 1

The above example is utilizing the components item variable to tell Stratox which component you want to update, e.g.:

itemA.set({ headline: "Headline 1 been updated!" }).update();

There are tho 2 other ways you can also update the component with.

Update example 2

Utilize the view component setter again, but with updated values, and trigger the stratox.update() function to push changes to the view.

stratox.view("ingress", { headline: "Headline been twice!" });
stratox.update();

Update example 3

Utilize the stratox.update() function and set argument 1 to the expected component name and argument 2 to an anonymous function. The anonymous function, in turn, has one expected object argument where you can access the component's data and modify it.

stratox.update("ingress", function(obj) {
    obj.data.headline = "Headline updated thrice!";
});

Update view 2

Below, I will show you some ways you can update view content inside of the view.

export function custom({ props, view })
{
    // Use the bind function to bind the event to click
    const myClickEvent = view.bind((props) => {
        props.headline = 'Headline has been updated!';
    });
    
    /*
    // Manually trigger update
    const myClickEvent = view.bind((props) => {
        props.headline = 'Headline has been updated!';
        view.update();
    }, false);
    */

    return `
    <article>
        <section class="mb-30">
            <h2 class="title">${props.headline}</h2>
            <p>${props.content}</p>
        </section>
        <a class="button" href="#" onclick="${myClickEvent}">Update headline</a>
    <article>
    `;

    return out;
}

Result:

And that is that. Let's move on on how you can build to some forms

Last updated