gpt4 book ai didi

使用 Iron-router 的 Meteor 数据上下文

转载 作者:行者123 更新时间:2023-12-02 06:46:29 27 4
gpt4 key购买 nike

我是 Meteor 新手,我正在尝试在显示一个段落的页面中设置数据上下文。我需要访问passage_item.js Template.passageItem.rendered 中的数据,但此时未设置上下文。我想我需要类似 {{#with paragraph}} 的东西,但 one_passage.html 中不存在“passage”。

这里是一些代码片段。谢谢。

路由器.js

Router.map(function() {
this.route('passagesList', {path: '/'});
this.route('onePassage', {
path: '/passages/:_id',
data: function() { return Passages.findOne(this.params._id); }
});
});

one_passage.html

<template name="onePassage">
{{> passageItem}}
</template>

passage-item.html

<template name="passageItem">
<div class="passage">
<div class="one-passage">
<h4><a href= "{{pathFor 'onePassage'}}">{{title}}</a></h4>
<div class="passage-content">
{{content}}
</div>
</div>
</div>

passage_item.js

Template.passageItem.helpers({
});

Template.passageItem.rendered = function() {
Meteor.defer(function() {
$('.passage-content').lettering('words');
//I want to be able to access the data object here. I have a list of words that are highlighted
});
};

最佳答案

收藏

假设您像这样创建了 Passages 集合,并且已打开自动发布(默认情况下):

Passages = new Meteor.Collection('passages');

路由器映射

你这样映射你的路由器:

Router.map(function() {
this.route('onePassage', {
path: '/passages/:_id',
template: 'passageItem' // <-- to be explicit
data: function() {
return Passages.findOne(this.params._id);
}
});
});

模板

您的模板如下所示:

<template name="passageItem">
<div class="passage">
<div class="one-passage">
<h4><a href= "{{pathFor 'onePassage'}}">{{title}}</a></h4>
<div class="passage-content">
{{content}}
</div>
</div>
</div>
</template>

模板中“this”的范围将设置为 Passages.findOne 选择器返回的文档。

如果模板未呈现,则意味着您正在搜索不存在的段落,或者您的段落缺少标题或内容字段。

渲染函数

现在回答你问题的最后一部分。渲染函数中“this”的范围设置为模板实例。因此,如果您需要访问模板数据,请尝试以下操作:

Template.passageItem.rendered = function() {
console.log(this.data); // you should see your passage object in the console
};

关于使用 Iron-router 的 Meteor 数据上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21579907/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com