如何从使用{{this}}的数组迭代中获取信息并删除项目Meteor

时间:2013-10-15 18:05:43

标签: javascript meteor handlebars.js

大家好我已经尝试过这种方法从Meteor.users数组中获取信息,但是它没有用,我也没有任何想法来解决这个问题。提前谢谢!

发布用户

Deps.autorun(function (handle) {

Meteor.publish('directory', function () {
  if (this.userId) {
  var user = Meteor.users.findOne(this.userId);
  var x = user.profile.x;
  return Meteor.users.find({"profile.x": x});
  } else {
    handle.stop();
  }
});
});

Meteor.users.allow({

  remove:function() {
    var user = Meteor.user();
    var x = user.profile.x;
    if(x === "admin") {
      return true;
    } else {
      return false;
    }
    },
});

助手:

listTeam: function () {
    var userTeam = Meteor.users.find({}).fetch();
    return _.map(userTeam || [], function(user) { return user.emails[0].address || user._id;});
 },

模板:

<ul>
{{#each listTeam}}
<div>
<li id="item">{{this}}</li><button id="deleteTeam" class="button">Delete</button>
</div>
{{/each}}
</ul>

第一种方法:

'click #deleteTeam': function (event, template) {
    var id = template.data._id;
    Meteor.users.remove({_id:id});

  }

返回undefined(仅在第一个迭代项中)

我尝试过使用jQuery,但它没用,因为我只收到电子邮件地址和第一项。(我不是在迭代id,我认为这似乎不是一个好的解决方案。)

1 个答案:

答案 0 :(得分:0)

在模板内部事件函数中,您可以使用它来获取实例数据。 例如:

'click #deleteTeam': function (event, template) {
    var id = this._id;
    Meteor.users.remove({_id:id});
}

或者更短:

'click #deleteTeam': function () {
    Meteor.users.remove({_id: this._id});
}

如果您遇到其他问题,可能是权限问题,我建议使用此模式:

Meteor.users.allow({
  remove: function(userId, doc) {
    var user = Meteor.users.findOne({_id: userId});
    return user ? user.profile.admin : false;
  }
});