2017-08-05 124 views
1

我建立它通过Vue公司JS - 定义道具为特定类型的

现在我想这个道具接受idFieldType的名义接受的道具一个vuejs组件只有号码类型字符串类型

所以我写如下

idFieldType: { 
    Type: Function, 
    default: function() { 
     return Number; 
    }, 
    validator: function() { 
     if(value == String || value == Number) { 
       return true; 
     } 

     return false;  
    } 
} 

我也试过更换为Object类型。

我的问题是如何写一个只接受特定类型的道具?

+0

中看到更多关于你的信息。尝试typeOf – rashidnk

+0

也许我没有正确地得到你的问题,但是如果你想要一个prop是数字或字符串,为什么不使用'my-prop:[String,Number]'? – choasia

+0

因为我不希望该值是一个字符串或数字,我希望该值是类型字符串或数字:) – Storm

回答

0

好的,找到了解决办法..

idFieldType: { 
       type: Function, 
       default: Number, 
       validator: function (value) { 
        if (value() == String || value() == Number) { 
         return true; 
        } 

        return false; 
       } 
      } 

问题是指定类型作为功能当默认期望的功能,我被返回的函数返回一个函数:)

+1

很高兴你解决它... :)发布答案+1 –

2

Vue.JS已建成的道具验证,可以设置类型,需要与否,默认值... 例如:

Vue.component('example', { 
    props: { 
    // basic type check (`null` means accept any type) 
    propA: Number, 
    // multiple possible types 
    propB: [String, Number], 
    // a required string 
    propC: { 
     type: String, 
     required: true 
    }, 
    // a number with default value 
    propD: { 
     type: Number, 
     default: 100 
    }, 
    // object/array defaults should be returned from a 
    // factory function 
    propE: { 
     type: Object, 
     default: function() { 
     return { message: 'hello' } 
     } 
    }, 
    // custom validator function 
    propF: { 
     validator: function (value) { 
     return value > 10 
     } 
    } 
    } 
}) 

注,即Vue.js也接受MULT可能的类型propB: [String, Number],,这就是你需要的。 你可以在official wiki