启用与用户凭据相关的特定UI

时间:2016-08-09 04:19:49

标签: javascript firebase underscore.js firebase-realtime-database firebase-authentication

我有一张纸卡列表,其中包含各种用户发布的信息。当用户访问网络应用时会发生这种情况。

  1. 他们使用电子邮件和密码登录
  2. 他们发布有关其商品的信息
  3. 使用firebase.auth()。currentUser.email查询他们的电子邮件地址,并将其与他们发布的信息一起存储到数据库中。
  4. 所以我想要做的是获取当前登录用户的电子邮件,然后检查电子邮件是否与其中一个关键子节点相同,如果它们是相同的,我想要启用一个可以用来删除帖子的按钮。

    我尝试了以下代码,但无效。

    已编辑的代码

    uploadsRef.on('value', function(snap) {
          var data = _.map(snap.val(), function (item, key) {
            item.key = key;
            var mail = item.email;
            console.log(mail);
            firebase.auth().onAuthStateChanged(firebaseUser => {
              if(firebaseUser){
                var user = firebase.auth().currentUser;
                var usr_mail = user.email;
                console.log(usr_mail);
                if(mail == usr_mail){
                  item.hidden = 'disp';
                }
              }
              else{
                if(mail != usr_mail){
                  item.hidden = 'hidden';
                }
              }
            });
    
            return item;
          });
          myFeed.splice.apply(myFeed, ['datas', 0, myFeed.length].concat(data));
        });
    

1 个答案:

答案 0 :(得分:0)

我几乎可以肯定你this已脱离背景。试试myFeed.$.sold.classList.remove('hide')

或者,将类绑定到元素而无需手动使用classList。

var myFeed = this;
var uploadsRef = firebase.database().ref('cattle/data');

uploadsRef.on('value', function(snap) {
  var data = _.map(snap.val(), function (item, key) {
    item.key = key;
    var mail = key.email;
    var user = firebase.auth().currentUser;
    var usr_mail = user.email;
    if(mail !== usr_mail){
      item.hidden = 'hidden';
    }
    return item;
  });
  myFeed.splice.apply(myFeed, ['datas', 0, myFeed.length].concat(data));
});

现在您已为所有非所有者item.hidden设置为“隐藏”...

<style>
  .hidden {display: none;}
</style>
<div class$="[[item.hidden]]"></div>