Rozważmy aplikację VueJS, która pozwala na wyświetlanie/edytowanie blogposts.Właściwy sposób vueJS do synchronizacji rekwizytów z danymi
- Po kliknięciu "edytuj blogpost" pokazany jest modal (komponent Vue), aby edytować bieżący blogpost (tylko zwykły obiekt js).
- W tym celu przekazuję bieżący blogpost jako
prop
do modalnego komponentu. - Składnik modalny składa się z kilku pól formularzy, które powinny być wypełnione atrybutami blogpost.
- Jednak sposób Vue 'ma mieć obiekt
data
na komponencie Modal, który działa jako model do wypełniania pól formularza, i na odwrót, być aktualizowany, gdy użytkownik zmienia pola formularza.
Problem: Jak mam podłączyć blogpost która jest przekazywana jako prop
dziedziny modalnego składnika data
tak że:
- blogpost wypełnia pola formularza
- z blogpost jest aktualizowany podczas aktualizowania pól formularza:
Jaki jest właściwy sposób Vue, aby to osiągnąć?
Przyjęto opcję 4 (opartą na czacie vuejs gitter), która wydaje się działać.Jest to oparte na zrozumieniu, że wszystkie rekwizyty są automatycznie częścią 'danych' (nie ma potrzeby" synchronizacji "tutaj). Dlatego jeśli mam prop o nazwie' blogpost' (zwykły obiekt), mógłbym po prostu użyć wpisu na blogu w szablonie komponentu jak więc ''. Jest to z tym samym zastrzeżeniem, co opcja 1, ponieważ aktualizacje są wykonywane natychmiast, więc muszę się upewnić, że w dalszym ciągu 'blogpostOld' lub coś do scalenia z powrotem zostanie anulowane. Dzięki za świetny przegląd. –
Tak, "rekwizyty", "dane" i "obliczone" mają podobne cechy. ALE, o ile rozumiem, kiedy przekazujesz propowi element, relacja jest jednokierunkowa (zmiana w rodzicu jest przekazywana do dzieci). Jeśli użyjesz '.sync', relacja staje się" dwukierunkowa ": zmiana danych w potomku również zmienia rodzica: https://vuejs.org/guide/components.html#Prop-Binding-Types –
Zdecydowanie widząc zamierzone dwukierunkowe zachowanie bez definiowania "synchronizacji". Zgaduję, że to dlatego, że przekazuję odwołanie do obiektu zamiast prostego typu, takiego jak string. –