开发者问题收集

vue js 等于字符串

2020-08-10
2170

为什么 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个回答

this 在这里获取 undefined ,因为它未绑定到您的 fn 。使用 箭头语法this 词汇绑定到 fn ,它应该可以工作

 computed: {
    UidMessages: function() {
       return this.Messages.filter(m => {
         return m.to == this.userId
     })
   }
  },
Satyam Pathak
2020-08-10

您可以使用 @Satyam Pathak 回答中提到的 arrow 函数,或者您可以在 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.
   });
 }
}

附言 请参阅 “this”关键字如何工作? 了解更多详情。

Karan
2020-08-10