Maison > Article > interface Web > Comment implémenter la fonction de mise à jour du tableau dans VUE
Cet article présente principalement la question de la mise à jour du tableau VUE. L'article présente comment Vue surveille les changements de données. Les amis dans le besoin peuvent s'y référer
1. 🎜>
(1) Changement de tableau d'originepush pop
unshift
shift
inverse
tri
épissure
concat
filter
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <title>vue示例</title> </head> <body> <p id="app"> <ul> <template v-for="book in books"> <li>书名:{{book.name}}</li> <li>作者:{{book.author}}</li> </template> </ul> </p> <script src="https://cdn.bootcss.com/vue/2.5.9/vue.min.js"></script> <script type="text/javascript"> var app = new Vue({ el: '#app', data: { books: [{ name: 'vuejs', author: 'a' }, { name: 'js高级', author: 'b' }, { name: 'java', author: 'c' } ] } }); //直接可以使得视图改变 //app.books.push({name: 'c++',author: 'd'}); //需要更新原数组 app.books = app.books.concat([{name: 'c++',author: 'd'}]); </script> </body> </html>Remarque : ce qui suit ne déclenchera pas de mise à jour de la vue. (1) Définir les éléments directement par index. (2) Modifiez la longueur du tableau, app.books.length=1. Si vous ne souhaitez pas modifier le tableau d'origine, vous pouvez utiliser des propriétés calculées pour filtrer le tableau, telles que :
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <title>vue示例</title> </head> <body> <p id="app"> <ul> <template v-for="book in filterBooks"> <li>书名:{{book.name}}</li> <li>作者:{{book.author}}</li> </template> </ul> </p> <script src="https://cdn.bootcss.com/vue/2.5.9/vue.min.js"></script> <script type="text/javascript"> var app = new Vue({ el: '#app', data: { books: [{ name: 'vuejs', author: 'a' }, { name: 'js高级111', author: 'b' }, { name: 'java33333', author: 'c' } ] }, computed:{ filterBooks:function(){ return this.books.sort(function(a,b){ return a.name.length>b.name.length?1:-1 }) } } }); </script> </body> </html>
Alors, comment fonctionne vue surveiller les modifications des données ?
1) Comment suivre les modifications Chaque instance de composant a un objet d'instance d'observateur correspondant, qui enregistrera les propriétés en tant que dépendances pendant le processus de rendu du composant lorsque la dépendance est établie. setter est appelé, l'observateur est invité à recalculer, ce qui entraîne la mise à jour de ses composants associés. 2) Problèmes de détection des modifications En raison des limitations du JavaScript moderne (et de la dépréciation d'Object.observe), Vue ne peut pas détecter l'ajout ou la suppression de propriétés d'objet. Étant donné que Vue effectue le processus de conversion getter/setter sur la propriété lors de l'initialisation de l'instance, la propriété doit exister sur l'objet de données pour que Vue la convertisse afin qu'elle soit réactive. Par exemple :var vm = new Vue({ data:{ a:1 } }) // `vm.a` 是响应的 vm.b = 2 // `vm.b` 是非响应的Vue n'autorise pas l'ajout dynamique de nouvelles propriétés réactives au niveau racine sur des instances déjà créées. Cependant il est possible d'ajouter des propriétés de réponse aux objets imbriqués en utilisant la méthode Vue.set(object, key, value) :
Vue.set(vm.someObject, 'b', 2)Vous pouvez également utiliser la méthode d'instance vm.$set, qui est également globale Vue. Alias pour la méthode set,
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!