Dynamic Blazor动态创建元素并追加子元素
我想通过Blazor Webassembly中的JSInterop动态创建DIV容器。我的方法是在C#中创建一个CreateElement方法,它在javascript中调用CreateElement并返回一个ElementReference作为结果。但是当我运行下面的代码时,我只得到一个空对象 C#代码:Dynamic Blazor动态创建元素并追加子元素,dynamic,blazor,blazor-webassembly,blazor-jsinterop,Dynamic,Blazor,Blazor Webassembly,Blazor Jsinterop,我想通过Blazor Webassembly中的JSInterop动态创建DIV容器。我的方法是在C#中创建一个CreateElement方法,它在javascript中调用CreateElement并返回一个ElementReference作为结果。但是当我运行下面的代码时,我只得到一个空对象 C#代码: 你不需要JS。Blazor是为了不必操纵DOM而制作的。创建组件。以这种方式操纵DOM违背了制作Blazor的目的。您可能想从@Porkopek提到的的一些基础知识开始,这样做并不是一个很好
你不需要JS。Blazor是为了不必操纵DOM而制作的。创建组件。以这种方式操纵DOM违背了制作Blazor的目的。您可能想从@Porkopek提到的的一些基础知识开始,这样做并不是一个很好的理由,因为它或多或少会破坏使用Blazor动态呈现标记的目的 如果必须使用
createElement
,则应将JS互操作代码绑定到要调用的窗口
对象:
window.createDivElement = createElement(element, objectReference) {
const newDiv = document.createElement("div");
return element.appendChild(newDiv);
}
旁注,
DotNetObjectReference.Create(this)
用于通过[JSInvokable]
属性回调C#组件方法,在这里可能不需要。在JS中这样做有充分的理由吗?而不是C#?
createElement(element, objectReference) {
const newDiv = document.createElement("div");
return element.appendChild(newDiv);
}
window.createDivElement = createElement(element, objectReference) {
const newDiv = document.createElement("div");
return element.appendChild(newDiv);
}