【问题标题】:Call JS function on each page load在每个页面加载时调用 JS 函数
【发布时间】:2019-11-22 11:21:54
【问题描述】:

我需要在 Blazor 中的每个页面加载时调用 JS 函数。 JS 函数初始化和 html 元素,所以 OnInitializedAsync 对我不起作用,因为该元素直到没有被渲染。

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

目前我在“OnAfterRenderAsync”方法中这样做:

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

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

#editor是textarea的id

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

jsFunctions.initEditor是JS函数的名字

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

【问题讨论】:

  • 感谢@daniherrera,我目前正在做同样的事情。
  • 你是在猜谜语吗?所以现在我们了解到 OnAfterRenderAsync 方法运行良好,但问题在于您的 JavaScript 函数,对吗?那么如何提供函数的代码以及相关的所有内容,例如,什么是“#editor”。

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


【解决方案1】:

这解决了问题。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 2012-08-30
    • 2012-05-27
    • 2021-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多