最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

vue列表排序实现中的this问题的详细介绍(代码示例)

来源:动视网 责编:小采 时间:2020-11-27 19:27:15
文档

vue列表排序实现中的this问题的详细介绍(代码示例)

vue列表排序实现中的this问题的详细介绍(代码示例):本篇文章给大家带来的内容是关于vue列表排序实现中的this问题的详细介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。最近在看vue框架的知识,然后其中有个例子中的this的写法让我很疑惑<!DOCTYPE html>
推荐度:
导读vue列表排序实现中的this问题的详细介绍(代码示例):本篇文章给大家带来的内容是关于vue列表排序实现中的this问题的详细介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。最近在看vue框架的知识,然后其中有个例子中的this的写法让我很疑惑<!DOCTYPE html>

本篇文章给大家带来的内容是关于vue列表排序实现中的this问题的详细介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

最近在看vue框架的知识,然后其中有个例子中的this的写法让我很疑惑

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <title>Page Title</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
 <div id="demo">
 search: <input type="text" v-model="searchName">
 <ul>
 <li v-for="(p,index) in filterPersons" :key="index">
 {{index}} --- {{p.name}} --- {{p.age}}
 </li>
 </ul>
 <button @click="setOrderType(1)">年龄升序</button>
 <button @click="setOrderType(2)">年龄降序</button>
 <button @click="setOrderType(0)">原本顺序</button>
 </div>
 <script src="../js/vue.js"></script>
 <script>
 var vm = new Vue({
 el: '#demo',
 data: {
 searchName: '',
 /**
 * 排序种类:
 * 0 - 原本顺序
 * 1 - 年龄升序
 * 2 - 年龄降序
 */
 orderType: 0,
 persons: [{
 name: 'Tom',
 age: 18
 },
 {
 name: 'Jack',
 age: 20
 },
 {
 name: 'Bob',
 age: 16
 },
 {
 name: 'Kaka',
 age: 25
 },
 {
 name: '22',
 age: 23
 },
 {
 name: '33',
 age: 18
 },
 {
 name: 'Shadow',
 age: 21
 },
 {
 name: 'Good',
 age: 18
 },
 {
 name: 'Lily',
 age: 20
 },
 {
 name: 'Lena',
 age: 19
 }
 ]
 },
 computed: {
 filterPersons() {
 // 取出相关的数据
 const {
 searchName,
 persons,
 orderType
 } = this;

 let flag;
 flag = persons.filter(p => p.name.indexOf(searchName) !== -1);

 if (orderType !== 0) {
 flag.sort(function (p1, p2) {
 if (orderType === 2) {
 return p2.age - p1.age;
 } else {
 return p1.age - p2.age;
 }
 });
 }

 return flag;
 }
 },
 methods: {
 setOrderType(orderType) {
 this.orderType = orderType;
 }
 }
 });
 </script>
</body>

</html>

在这堆代码中的filterPerson函数的第一行进行了this的赋值,创建了一个对象赋给了一个常量
在一些教程中表示这是取出要用的数据
其实算是简化操作,因为后面我将其注释掉,然后在每个变量前面加上this依旧可以跑起来

computed: {
 filterPersons() {
 // 取出相关的数据
 // const {
 // searchName,
 // persons,
 // orderType
 // } = this;

 let flag;
 flag = this.persons.filter(p => p.name.indexOf(this.searchName) !== -1);

 if (this.orderType !== 0) {
 flag.sort(function (p1, p2) {
 if (this.orderType === 2) {
 return p2.age - p1.age;
 } else {
 return p1.age - p2.age;
 }
 });
 }

 return flag;
 }
 }

所以,在这个地方是将要用的数据事先放在了this中, 主要是函数中本身没有这几个变量,所以直接在函数内部使用是会报错的,因此需要去外面的vue实例中获取。如果不这么做,要多写很多个this。

文档

vue列表排序实现中的this问题的详细介绍(代码示例)

vue列表排序实现中的this问题的详细介绍(代码示例):本篇文章给大家带来的内容是关于vue列表排序实现中的this问题的详细介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。最近在看vue框架的知识,然后其中有个例子中的this的写法让我很疑惑<!DOCTYPE html>
推荐度:
标签: VUE 实现 代码
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top