Преглед изворни кода

fix enumerated/boolean attr

Evan You пре 9 година
родитељ
комит
66387a4639
1 измењених фајлова са 16 додато и 3 уклоњено
  1. 16 3
      src/server/optimizing-compiler/modules.js

+ 16 - 3
src/server/optimizing-compiler/modules.js

@@ -11,6 +11,11 @@ import {
   isRenderableAttr
 } from 'web/server/util'
 
+import {
+  isBooleanAttr,
+  isEnumeratedAttr
+} from 'web/util/attrs'
+
 import type { StringSegment } from './codegen'
 import type { CodegenState } from 'compiler/codegen/index'
 
@@ -56,11 +61,19 @@ export function genDOMPropSegments (
 
 function genAttrSegment (name: string, value: string): StringSegment {
   if (plainStringRE.test(value)) {
+    // force double quote
+    value = value.replace(/^'|'$/g, '"')
+    // force enumerated attr to "true"
+    if (isEnumeratedAttr(name) && value !== `"false"`) {
+      value = `"true"`
+    }
     return {
       type: RAW,
-      value: value === '""'
-        ? ` ${name}`
-        : ` ${name}=${value}`
+      value: isBooleanAttr(name)
+        ? ` ${name}="${name}"`
+        : value === '""'
+          ? ` ${name}`
+          : ` ${name}=${value}`
     }
   } else {
     return {