Vue JS - определить опору как конкретный тип

1

Я создаю компонент vuejs, который принимает опору по имени idFieldType

Теперь я хочу, чтобы эта опора принимала только тип номера или строковый тип

Поэтому я написал это следующим образом

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

         return false;    
    }
}

Я также попытался заменить тип на Object.

Мой вопрос в том, как я могу написать опору, которая принимает только определенные типы?

  • 0
    ты можешь. попробуйте typeOf
  • 0
    Возможно, я не правильно понял ваш вопрос, но если вы хотите, чтобы одна опора была либо Number, либо String, почему бы не использовать my-prop: [String, Number] ?
Показать ещё 1 комментарий
Теги:
vue.js
vuejs2
vue-component

2 ответа

5

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 также принимает несколько возможных типов propB: [String, Number], что вам нужно. И вы можете узнать больше об этом в официальной вики

0

Хорошо, нашел решение..

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

                    return false;
                }
            }

Проблема заключалась в том, что при указании типа как функции по умолчанию функция ожидает, я возвращаю функцию, возвращающую функцию :)

  • 1
    Рад, что вы это решили ... :) +1 за размещение ответа
  • 1
    если вы вызываете функцию в валидаторе, вы должны убедиться, что функция идемпотентна, так как вы можете вызвать ее 2 раза, даже прежде чем использовать ее.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню