Делаю одностраничное приложение. На странице есть несколько форм, каждая из которых позволяет добавлять информацию в БД. И формы эти между собой связаны - сначала заполняешь одну, потом вторую и т.п. Одновременно с этим можно загрузить данные из БД в эти формы для редактирования и последующего обновления этих данных в БД.
Каждую форму я вынес в компонент. Для реактивности полям в форме назначил :value=""
. Если в Хранилище (vuex) есть данные, то они будут загружены в эти поля. Но как быть, когда данных в харнилище нет? Возникает резонная ошибка и компонент не отображается.
Ближе к сущностям. На странице есть форма для регистрации данных человека: ФИО, адрес и др. В хранилище две переменные:
person
- для данных пользователя, которые получим из БД и которыми нужно будет автоматически заполнить форму + данные человека, которые сюда попадут из формы при нажатии кнопки "добавить" (а затем будут записаны в БД).person_id
- переменная для идентификатора человека, данные которого следует загрузить из БД (и заполнить ими форму). Если пусто тут, значит форма пустая. Код предаставлен ниже:
export const store = new Vuex.Store({
state: {
person_id: 120,
person: {},
},
Таким образом планирую использовать одну форму и для создания новых записей. И для загрузки\редактирования существующих.
Но как быть с тем, что форма изначально при загрузке страницы пустая? Т.к. она пустая, а в форме проставлены :value="person.surname"
и т.д., то возникает ошибка. И компонент (форма) вовсе не отображается.
Неужели единственное решение - вручную прописывать пустой объект по умолчанию в хранилище? Или есть другие варианты?
Как сказано в документации:
Vue не может отследить добавление или удаление свойства объекта. Чтобы поле стало реактивным, Vue превращает его в пару геттер/сеттер в ходе инициализации экземпляра.
Чтобы динамически добавить реактивное свойство, вам необходимо использовать метод:
Vue.set(this.object, key, value)
или
this.$set(this.object, key, value)
Иногда нужно добавить несколько свойств в существующий объект, например, с помощью Object.assign() или _.extend()
В данном случае документация советует использовать следующий метод:
this.object = Object.assign({}, this.object, { key1: value1, key2: value2 })
Поскольку
Vuex — это реактивная переменная Vue
производить мутации по добавлению новых свойств у объекта вам необходимо тем же способом, что и в самом Vue.
Подробнее прочитайте в разделе документации Vue "Подробно о реактивности" и в разделе документации Vuex "Мутации"
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Подскажите, у меня вот такой HTML (CSS потом вынесу):
Допустим, у нас есть форма, и в ней есть текстовое поле с вводом пароля:
Есть хостинг, планируется туда загружать сайты для заказчиков на вордпресс(те
Интересует общепринятый принцип построения RESTful APIВ качестве бекэнда использовать планирую yii2 standart