尝试构建应用程序,如此
App有两个集合
影
{
"_id" : "S7mGgtJhiQ3GZavqn",
"cast_id" : [
"pBnAFGaxNGLkDGuPk",
"7HZkmd6BofNmjXRyw"
],
"date" : "31-May-2014",
"name" : "Rakshak",
"vote" : 4
}
铸造
{
"_id" : "pBnAFGaxNGLkDGuPk",
"link" : "http://en.wikipedia.org/wiki/Poonam_Dhillon",
"name" : "Poonam Dhillon"
}
{
"_id" : "7HZkmd6BofNmjXRyw",
"link" : "http://en.wikipedia.org/wiki/Rishi_Kapoor",
"name" : "Rishi Kapoor"
}
我写过模板,就像这样
<template name="movies">
{{#each movies}}
{{> movie}}
{{/each}}
</template>
<template name="movie">
{{> vote}}
<h3><span class="name"><b>{{name}}</b></span><br></h3>
<span class="date"><b>Release Date:</b> {{date}}</span><br>
<span class="cast"><b>Cast:</b></span>
{{#each casts}}
{{> cast}}
{{/each}}
<br>
</template>
<template name="casts">
{{#each cast}}
<a href="{{link}}">{{name}}</a>,
{{/each}}
</template>
和模板经理
Template.movies.helpers({
movies : function () {
console.log("inside movies helper");
return Movies.find();
}
});
Template.movie.helpers({
casts : function () {
console.log("inside movie.helpers");
console.log(this);
return Cast.find({_id: this._id}) ;
}
});
我已经尝试了很多,但无法使用 Cast 中的演员链接呈现名称。?
答案 0 :(得分:2)
使您的示例工作所需的修复程序很少,所以我决定创建快速的流星项目: https://github.com/parhelium/meteor-so-movies-cast
结果:
固定代码:
<template name="cast">
<a href="{{link}}">{{name}}</a>,
</template>
Template.movie.helpers({
casts : function () {
console.log("inside movie.helpers");
console.log(this);
return Casts.find({_id: {$in:this.cast_id}}) ;
}
});
答案 1 :(得分:0)
您的代码无效,因为您没有在影片对象上使用cast_id数组。 相反,你试图找到与电影相关的_id的演员表。在电影模板助手中,数据上下文设置为电影对象。
相反,您应该将数据上下文设置为演员模板的cast_id条目,如下所示:
电影模板:
{{#each cast_id}}
{{> cast }}
{{/each}}
投射模板:
{{#with getCast}}
DostuffwithData from getCast
{{/with}}
getCast模板助手:
Template.cast.getCast = function () {
return Cast.find(this);
}