javascript - template.data._id 在 Meteor 中做什么?

标签 javascript mongodb templates meteor

初级 Meteor/JS 问题:

在 Meteor 中关联对象时,我看到一小行我不理解的代码。例如,发布带有相关评论的帖子。

var $body = $(e.target).find('[name=body]');
var comment = {
  body: $body.val(),
  postId: template.data._id
};

所以得到评论的内容,把它放在变量“comment”中,同时创建一个postId进入这个评论,这样你就知道评论属于哪个帖子。正在使用 *'template.data._id'* 调用此 postId

我的问题是:

  1. 那么你调用模板,那你是不是要调用模板名?不是数据?数据来自哪里?
  2. 除此之外,您调用数据...然后调用 ._id,“数据”还有其他选项吗?浏览器

    template.data.(option)

  3. 这对我不起作用,哈哈,*console.log(template.data._id);* 未定义。所以它并没有像宣传的那样获取对象 ID。我确定我搞砸了。

如果您需要更多上下文,这里是周围的代码: https://github.com/DiscoverMeteor/Microscope/blob/master/client/views/comments/comment_submit.js

最佳答案

从最简单的开始,在你的第 3 点下它应该是:

console.log(template.data._id);

关于第 1 点和第 2 点,要注意的关键思想是您的代码是在 Template.commentSubmit.events({}) 内部调用的。在此对象(“{}”)内部,您正在使用文档中的模板实例,包括传递给该实例的任何数据。在不同的模板中,您将收到不同的数据,因此 template.data 将包含不同的键和值。您可以在此处的文档中查看更多信息,http://docs.meteor.com/#template_inst .

因此,在回答您的问题时,您可以调用“数据”而不是模板名称的原因是模板名称已经由 Template.commentSubmit 提供。请注意,在 events({}) 内部,“this”通常等同于“template.data”。所以

console.log(template.data._id);

通常等同于

console.log(this._id);

您可以访问的数据属性将始终根据模板接收到的实例而有所不同。例如,如果 template.data 由 {_id: 1, name: "x", location: "y"} 组成,您可以通过调用键来检索这些值,例如“template.data.name”或“template.data._id”等。在您的示例中,您将 postID 设置为 template.data._id 是正确的。

到达模板的数据来自您的 Meteor.subscriptions。希望这会有所帮助。

关于javascript - template.data._id 在 Meteor 中做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19937955/

相关文章:

javascript - 播放暂停按钮切换按钮

javascript - 在日期中添加年份(并处理闰年)

c++ - MongoDB C++ 驱动程序——通过引用传递查询对象在随后使用其排序时引发错误

javascript - openlayers 标记上的 Bootstrap 弹出窗口

javascript 将分钟添加到 new Date();在使用对象之前

javascript - 将 ng-include 用于原始(或编译)HTML 还是模板 URL?

templates - 模板中的多个 primefaces 消息

python - Django 管理样式 : Change "Site administration" and subheadings

javascript - 如何测量 JavaScript 中交互和 mousedown 事件之间的延迟?

node.js - Mongodb/Mongoose 查询