Реакционная способность для Vue объектов, которые являются объектами - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть компонент с реквизитом value (используется для v-model), а тип реквизита - объект.Вот пример значения реквизита value:

{type: "column": {value: {column: "col1", anotherattr: "test"}}}

Однако;если я передам следующее значение компоненту, это вызовет проблемы реактивности, поскольку anotherattr здесь не определено:

{type: "column": {value: {column: "col1"}}}

Я хочу, чтобы компонент мог проверять схему и делать атрибуты реактивными автоматически, потому чтоanotherattr на самом деле является необязательным свойством.

Какой здесь предложенный подход?Я думал об использовании validator, но это выглядело как анти-шаблон, так как он использовался для проверки.Есть ли практический подход к этой проблеме?(Может быть, Typescript будет полезен?)

1 Ответ

0 голосов
/ 22 февраля 2019

С помощью Typescript вы можете сделать что-то вроде этого:

export class YourProp {
    constructor(
        public value: YourValue
    )
}

export class YourValue {
    constructor (
        public columnName: String,
        public anotherAttr: String = "default" // give it a default value since its optional
)

И затем не обрабатывать опору как объект, а как экземпляр YourProp.

...