|
|
@@ -1,6 +1,7 @@
|
|
|
/* @flow */
|
|
|
|
|
|
import { extend } from 'shared/util'
|
|
|
+import { isIE9 } from 'core/util/env'
|
|
|
import {
|
|
|
isBooleanAttr,
|
|
|
isEnumeratedAttr,
|
|
|
@@ -17,7 +18,7 @@ function updateAttrs (oldVnode: VNodeWithData, vnode: VNodeWithData) {
|
|
|
let key, cur, old
|
|
|
const elm = vnode.elm
|
|
|
const oldAttrs = oldVnode.data.attrs || {}
|
|
|
- let attrs = vnode.data.attrs || {}
|
|
|
+ let attrs: any = vnode.data.attrs || {}
|
|
|
// clone observed objects, as the user probably wants to mutate it
|
|
|
if (attrs.__ob__) {
|
|
|
attrs = vnode.data.attrs = extend({}, attrs)
|
|
|
@@ -30,6 +31,10 @@ function updateAttrs (oldVnode: VNodeWithData, vnode: VNodeWithData) {
|
|
|
setAttr(elm, key, cur)
|
|
|
}
|
|
|
}
|
|
|
+ // #4391: in IE9, setting type can reset value for input[type=radio]
|
|
|
+ if (isIE9 && attrs.value !== oldAttrs.value) {
|
|
|
+ setAttr(elm, 'value', attrs.value)
|
|
|
+ }
|
|
|
for (key in oldAttrs) {
|
|
|
if (attrs[key] == null) {
|
|
|
if (isXlink(key)) {
|