angularjs 使用指令设置camelCase中元素的属性值

5jdjgkvh  于 2023-09-30  发布在  Angular
关注(0)|答案(4)|浏览(155)

我试图从一个指令中向一个angularJs元素添加一个属性,如下所示:

element.attr('startOffset', val);

但是当我检查元素时,添加的属性是'startoffset',其中'o'不是大写字母。
有没有什么方法可以给一个元素添加一个属性,并且保持单词的大小写不变?
谢谢

6gpjuf90

6gpjuf901#

如果你使用jqliteWrapper .attr或者直接使用DOM操作.setAttribute来设置一个属性,在附加到元素之前,它会将属性名小写。
当在HTML文档中的HTML元素上调用setAttribute时,它的属性名称参数将小写。
由于您使用的是SVG,请尝试使用setAttribute直接操作,但是设置属性会保留SVG的大小写,不确定jquery是否在内部进行任何转换。

element[0].setAttribute('startOffset', val);

Plnkr

确认它是jquery inclusion before angular,这导致它在通过.attr设置属性名称时不保留属性名称大小写,但如果您不包括jquery并且angular福尔斯退到jqLite,它将按原样设置属性名称,因此除了直接DOM操作外,这将与SVG一起工作(与attrs.$set沿着)。

n3ipq98p

n3ipq98p2#

我在主div中创建了命名空间:

<div class="main-wrapper" xmlns="appnamespace">...</div>

然后我通过setAttributeNS在TS代码中插入html-element(element)的属性(当然,在JS中也是可能的):

element.setAttributeNS(
            'appnamespace', 'myAttribute', info.value
)

该属性出现在html-template中

cld4siwp

cld4siwp3#

setAttributeNS使用给定的命名空间和名称添加新属性或更改属性的值
element.setAttributeNS(namespace,name,value)
namespace是指定属性的命名空间的字符串。name是一个字符串,通过限定名标识属性;即名称空间前缀后跟冒号,然后是本地名称。value是新属性的所需字符串值。

w6lpcovy

w6lpcovy4#

这对我来说很有效->

var att = document.createAttribute("newName"); // Create a "newName" attribute
att.value = newName; // Set the value of the newName attribute
parent_tag.setAttributeNode(att);

相关问题