Vue JS等于字符串

时间:2020-08-10 10:00:30

标签: javascript vue.js

为什么filter不与this.userId一起使用,而是与硬代码值"admin"一起使用?我该如何解决?

computed: {
    UidMessages: function() {
       return this.Messages.filter(function(m) {
         return m.to == this.userId;
     })
   }
 },

它确实有效=>

computed: {    
   AMesseg: function() {
     return this.Messages.filter(function(m) {
       return m.to== "admin"
     })
   }
},

我认为是因为字符串比较

谢谢。

2 个答案:

答案 0 :(得分:1)

this在这里获得undefined,因为它没有绑定到您的fn。使用arrow syntaxthis绑定到fn,它应该可以工作

 computed: {
    UidMessages: function() {
       return this.Messages.filter(m => {
         return m.to == this.userId
     })
   }
  },

答案 1 :(得分:0)

您可以将arrow函数用作mentioned in answer by @Satyam Pathak,也可以声明this.Messages.filter之外的对象,并在有条件的情况下使用该对象。如下所示。

computed: {
  UidMessages: function() {
     let userId = this.userId;    // declare and assign userId value.
     return this.Messages.filter(function(m) {
       return m.to == userId;     // use userId variable for condition.
   });
 }
}

PS 。有关更多详细信息,请参见How does the "this" keyword work?