Просмотр исходного кода

respect boolean prop default value (fix #1079)

Evan You 11 лет назад
Родитель
Сommit
8184a95b40
2 измененных файлов с 23 добавлено и 5 удалено
  1. 4 5
      src/compiler/compile-props.js
  2. 19 0
      test/unit/specs/directives/prop_spec.js

+ 4 - 5
src/compiler/compile-props.js

@@ -155,13 +155,12 @@ function makePropsLinkFn (props) {
  */
 
 function getDefault (options) {
-  // absent boolean value
-  if (options.type === Boolean) {
-    return false
-  }
   // no default, return undefined
   if (!options.hasOwnProperty('default')) {
-    return
+    // absent boolean value defaults to false
+    return options.type === Boolean
+      ? false
+      : undefined
   }
   var def = options.default
   // warn against non-factory defaults for Object & Array

+ 19 - 0
test/unit/specs/directives/prop_spec.js

@@ -447,6 +447,25 @@ if (_.inBrowser) {
       }))
     })
 
+    it('should respect default value of a Boolean prop', function () {
+      var vm = new Vue({
+        el: el,
+        template: '<test></test>',
+        components: {
+          test: {
+            props: {
+              prop: {
+                type: Boolean,
+                default: true
+              }
+            },
+            template: '{{prop}}'
+          }
+        }
+      })
+      expect(vm.$el.textContent).toBe('true')
+    })
+
     it('should initialize with default value when not provided & has default data', function (done) {
       var vm = new Vue({
         el: el,