首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么模板事件中的这个findOne会导致调用堆栈大小错误?

为什么模板事件中的这个findOne会导致调用堆栈大小错误?
EN

Stack Overflow用户
提问于 2015-08-07 15:39:30
回答 1查看 76关注 0票数 0

我正在尝试在SpaceBars中设置一个SpaceBars,它显示可以按下数组中每件事物的一些按钮。但是,当我按下按钮时,它会给出以下错误:

未登录的RangeError:最大调用堆栈大小超过underscore.js:1025 _.(匿名函数)@ underscore.js:1025 EJSON.clone @ ejson.js:475 (匿名函数)@ ejson.js:494 .each..forEach @ underscore.js:113 EJSON.clone @ ejson.js:493。一段时间同样的事情..。 .each..forEach @ underscore.js:113 EJSON.clone @ ejson.js:493 (匿名函数)@ ejson.js:494 .each..forEach @ underscore.js:113 EJSON.clone @ ejson.js:493

这是导致错误的findOne

代码语言:javascript
复制
"click .acceptFriend": function(requester){
  currentUserId = Meteor.userId(); 
  requesterUsername = requester;
  requesterId = friendRequests.findOne({$and:[{target:currentUserId}, {requester:requesterUsername}]})._id;

  Meteor.call("acceptRequest", requesterId, requester);
}

我知道这是friendRequests.findOne,因为我在每一行上都做了控制台日志,而这就是中断它的行。我尝试过几种不同的变体,但似乎friendRequests集合中的任何类型的查找都会破坏它。模板的相关部分如下:

代码语言:javascript
复制
{{#each getRequests}}
    {{requester}} <button class='acceptFriend'>accept</button>
{{/each}}

为什么会发生这个错误,我该如何解决呢?

EN

回答 1

Stack Overflow用户

发布于 2015-08-07 15:48:20

如果我们看看关于事件的文档

处理程序函数接收两个参数:event (一个具有事件信息的对象)和template (一个模板实例,用于定义处理程序的模板)。处理程序还根据处理事件的当前元素的上下文在this中接收一些附加的上下文数据。在模板中,元素的上下文是发生该元素的数据上下文,它由块帮助程序(如#with#each )设置。

总结: Meteor中的事件不接收它们的数据上下文作为参数:它们接收事件对象和发生事件的模板实例。数据上下文存储在this中。

因此,您应该做的是:

代码语言:javascript
复制
"click .acceptFriend": function(event, template){
  currentUserId = Meteor.userId(); 
  requesterUsername = this.requester;
  requesterId = friendRequests.findOne({$and:[{target:currentUserId}, {requester:requesterUsername}]})._id;

  Meteor.call("acceptRequest", requesterId, requesterUsername);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31881662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档