Evan You 9 лет назад
Родитель
Сommit
84b7b82031
2 измененных файлов с 5 добавлено и 2 удалено
  1. 4 1
      src/platforms/web/server/modules/dom-props.js
  2. 1 1
      src/platforms/web/server/util.js

+ 4 - 1
src/platforms/web/server/modules/dom-props.js

@@ -20,6 +20,7 @@ export default function renderDOMProps (node: VNodeWithData): string {
     return res
   }
 
+  const attrs = node.data.attrs
   for (const key in props) {
     if (key === 'innerHTML') {
       setText(node, props[key], true)
@@ -27,7 +28,9 @@ export default function renderDOMProps (node: VNodeWithData): string {
       setText(node, props[key])
     } else {
       const attr = propsToAttrMap[key] || key.toLowerCase()
-      if (isRenderableAttr(attr)) {
+      if (isRenderableAttr(attr) &&
+          // avoid rendering double-bound props/attrs twice
+          !(attrs && attrs[attr])) {
         res += renderAttr(attr, props[key])
       }
     }

+ 1 - 1
src/platforms/web/server/util.js

@@ -8,7 +8,7 @@ const isAttr = makeMap(
   'checked,cite,class,code,codebase,color,cols,colspan,content,http-equiv,' +
   'name,contenteditable,contextmenu,controls,coords,data,datetime,default,' +
   'defer,dir,dirname,disabled,download,draggable,dropzone,enctype,method,for,' +
-  'form,formaction,headers,<th>,height,hidden,high,href,hreflang,http-equiv,' +
+  'form,formaction,headers,height,hidden,high,href,hreflang,http-equiv,' +
   'icon,id,ismap,itemprop,keytype,kind,label,lang,language,list,loop,low,' +
   'manifest,max,maxlength,media,method,GET,POST,min,multiple,email,file,' +
   'muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,' +