在每次加载页面时调用JS函数

时间:2019-11-22 11:21:54

标签: c# .net-core blazor blazor-server-side

我需要在Blazor的每个页面加载中调用JS函数。 JS函数会初始化html元素,因此OnInitializedAsync对我不起作用,因为该元素一直未呈现。

每次页面加载时,都会执行OnAfterRenderAsync,但看起来在第一次渲染之后JS函数本身并未正确执行。

此刻,我在'OnAfterRenderAsync'方法中做到了,

protected override async Task OnAfterRenderAsync(bool firstRender)
{
    await JSRuntime.InvokeVoidAsync("jsFunctions.initEditor", "#editor");
}

但是,这是在页面的第一次加载(渲染)时执行的。我需要在每个渲染器上调用此JS函数。

#editor是文本区域的ID

<InputTextArea id="editor" @bind-Value="Model" />

jsFunctions.initEditor是JS函数的名称

window.jsFunctions = {
    initEditor: function (elementId) {
        tinymce.init({
            selector: elementId
        });
    }
}

1 个答案:

答案 0 :(得分:1)

这解决了问题。

window.jsFunctions = {
    initEditor: function (elementId) {

        if (tinymce.editors.length > 0) {
            tinymce.remove(elementId);
        }

        tinymce.init({
            selector: elementId
        });
    }
}