在Jade / Pug中应用属性的嵌套对象

Arr*_*ght 4 javascript node.js pug

有没有办法将数据/ aria属性的对象传递给元素?

我试过了:

div(data={foo:'bar'})

div(data={foo='bar'})

div&attributes({aria:{foo:'bar'}})
Run Code Online (Sandbox Code Playgroud)

但是这些都不输出所需的属性符号。对象文字的第一和第三位在基础数据/ aria属性中。第二个是语法错误。

我可以找到该作品的唯一方法是:

div(data-foo='bar')

div&attributes({'aria-foo':'bar'})
Run Code Online (Sandbox Code Playgroud)

Dan*_*iel 5

用减号领先新行 -您可以使用JADE / PUG编写常规JavaScript。这为您提供了解决几乎所有问题的强大武器。

只是抓住像 var attributes = {'foo':'bar', 'bar':'foo'},并在每个循环中使用所需的前缀扩展它的键即可。

这是可以使用的笔http://codepen.io/pure180/pen/kXwqdA,这可能是您的代码:

- var attributes = {'foo':'bar', 'bar':'baz'}
- var ariaAttributes = {}
- for (attr in attributes) {
-     var key = 'aria-' + attr
-     ariaAttributes[key] = attributes[attr]
- }

div&attributes(ariaAttributes) Test
Run Code Online (Sandbox Code Playgroud)

您也可以将其用作全局mixin,这是Pen http://codepen.io/pure180/pen/KrqYpB,看起来像这样:

mixin setAriaAttr(object)
  - var attributes = object
  - var ariaAttributes = {}
  - for (attr in attributes) {
  -     var key = 'aria-' + attr
  -     ariaAttributes[key] = attributes[attr]
  - }

  div&attributes(ariaAttributes) Test

- var aria = {'foo':'bar', 'bar':'baz'}
+setAriaAttr(aria)
Run Code Online (Sandbox Code Playgroud)