我需要在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
});
}
}
答案 0 :(得分:1)
这解决了问题。
window.jsFunctions = {
initEditor: function (elementId) {
if (tinymce.editors.length > 0) {
tinymce.remove(elementId);
}
tinymce.init({
selector: elementId
});
}
}