2013-10-04 11 views
17

I zostały zaktualizowane jade do najnowszej wersji, i zaczął widząc tę ​​wiadomość w konsoliJade: Nowe ostrzeżenie na wiele atrybutów

You should not have jade tags with multiple attributes

jest wymieniana jako cecha, here

0.33.0/2013-07-12 
Hugely more powerful error reporting (especially with compileDebug set explicitly to true) 
Add a warning for tags with multiple attributes 

i ja zobacz to w kodzie. https://github.com/visionmedia/jade/blob/a38aa552f6f53554ac5605299b6b8c7e07cbdf1f/lib/parser.js#L662

Ale co to naprawdę oznacza. Kiedy otrzymam to ostrzeżenie. Na przykład, kiedy będę się błąd na podstawie poniższego kodu (Działa bez ostrzeżenia, ale chciałbym wiedzieć, kiedy będę się błąd tak, że można porównać z mojego kodu)

mixin link(href, name) 
    a(class=attributes.class, href=href)= name 
    a(href=href, attributes)= name 

    +link('/foo', 'foo')(class="btn") 

Odpowiedz

23

wiele „atrybuty” nie robi nie rozumiesz, co prawdopodobnie uważasz. Nie jest to atrybut HTML, jaki znamy, ale token typu "atrybut".

Przykład:

a(href="#WAT").some-class(title="WAT") 

Uwaga jak mam dwa punkty atrybutów, każdy z jednego atrybutu.

lepiej umieścić je w jednym punkcie atrybut:

a(href="#WAT", title="WAT").some-class 
+2

+1. Rzeczywiście, miałem taki kod w moim mixin 'div (class = c) (attributes)', a ostrzeżenie zniknęło, kiedy zmieniono na 'div (class = c, attributes)' – bsr

-1

(Znalazłem to pytanie poprzez googleing to ostrzeżenie jako jeden z pierwszych wyników, ponieważ chciałem się go pozbyć ...)

Powyższa przyjęta odpowiedź nie pomogła mi w poniższym przykładzie, ale pokazuje, w jaki sposób można pozbyć się ostrzeżenia bez utraty funkcji atrybutów (nie daje to odpowiedzi na dlaczego działa w ten sposób):

// using mixins similar to +link(param1,param2) above where 'data' and 'class' 
// below are not named mixin params 

// OK (without a warning): 
+link("foo", data="true")(class="bar") 

// WARNING is shown: 
+link("foo")(class="bar")(data="true") 

// ERROR on compiling: 
+link("foo", class="bar", data="true") 

(przykro mi, aby utworzyć tak wiele nieporozumień, jak pokazano w komentarzach poniżej i nadzieję, że moja ostatnia edycja tutaj wyjaśnia, że ​​jest to ważne, choć nieco bardziej ogólne, odpowiedź/pomoc dla tych ostrzeżeń DocPad)

+0

using docpad 6.69.1 –

+0

Jeśli masz nowe pytanie, proszę użyć [dedykowanej funkcji] (http://stackoverflow.com/questions/ask) do tego. ;) – Scimonster

+0

Nie chciałem zadać bardzo podobnego pytania, gdy ten już oferuje rozwiązanie, które może działać. Dla mnie było to trochę inne. Nie ma większego sensu tworzenie nowego pytania, jeśli podpowie ci prowadzenie go bezpośrednio tutaj, prawda? nie bądź zbyt wybredny :-) –

Powiązane problemy