自定义 aurelia 属性中的简单 DOM 操作

Simple DOM manipulation in custom aurelia atttribute

我正在通过测试一个简单的 DOM 操作来试验 Aurelia 自定义属性。

令我惊讶的是,通过将椭圆节点附加到父 svg 节点来执行操作确实修改了 HTML 但不呈现椭圆。

操作 innerHtml 属性 确实按预期工作。

import { bindable, inject} from 'aureliaframework';

@inject(Element)
export class TestCustomAttribute {

    constructor(private element: SVGElement) {
    }
    attached()
    {
        var ellipse = document.createElement("ellipse");
        ellipse.setAttribute("cx","200");
        ellipse.setAttribute("cy","200");
        ellipse.setAttribute("rx","100")
        ellipse.setAttribute("ry","100")
        ellipse.setAttribute("style","fill:blue")

        //this is rendered
        this.element.innerHTML = "<ellipse style='fill: purple' cx='200' cy='200' rx='100' ry='100'></ellipse>"
         
         //this shows on DOM explorer but not rendered
         this.element.appendChild(ellipse)
    }

是否可以使用 appendNode() 而不是操作元素 innerHtml 来达到预期的结果?

看起来这更像是 DOM API 和 SVG 元素的一个怪癖,而不是 Aurelia 的问题。

尝试使用 createElementNS 并改为包含 svg 命名空间https://developer.mozilla.org/en-US/docs/Web/API/Document/createElementNS

有关详细信息,请参阅此问题:jquery's append not working with svg element?