我有两个集合,一个是Posts
集合,其中有一个帖子,id
。
另一个是Sets
集合,其数组名为 ArticleId ,用户可以通过从帖子集合插入帖子ID来更新使用按钮 toggle-addToSet.
用户创建名为 ArticleId 的数组,为其指定名称并定期将文章保存在其中。 想想Pinterest Boards或G +系列。
我在帖子项目上有一个按钮,当用户点击图标时,他创建的所有集合都出现在对话框中,用户选择要保存帖子ID的集合成。
<template name="summeryArticle">
<li>
<div class="row col s12 m7">
<div class="card" id="cardId">
<div class="card-image waves-effect waves-block waves-light">
<a href="/latestSingle/{{_id}}"><img src="{{better_featured_image.source_url}}"></a>
</div>
<div class="card-content">
<h5 class=" truncate grey-text text-darken-4">{{title.rendered}}</h5>
<a href="/latestSingle/{{_id}}">MORE</a> <a href="#modal2" class="modal-trigger waves-effect waves-light" onclick="Materialize.showStaggeredList('#bottom-options')"><i class="waves-effect waves-teal small material-icons right">playlist_add</i></a>{{>
likePartial}}{{> reblogPartial}}
<!-- The modal below is what brings up all the sets the user has created so that the user can pick with set they wat to save the article in -->
<div id="modal2" class="modal bottom-sheet">
<div class="modal-content">
<div class="row">
{{#each set}}
<div class="col s6 m6 addSet teal">
<div class="card ">
<div class="card-image">
<span class="card-title cardSet">{{name}}</span>
</div>
<div class="card-footer">
<button type="button" class="btn toggle-addToSet" name="button">add Article Id to this Set!</button>
</div>
</div>
</div>
{{/each}}
</div>
</div>
</div>
</div>
</div>
</div>
</li>
</template>
当用户点击图标modal-trigger
以显示他创建的集合时,它看起来像这样
如您所见,用户有三套,生活方式,爱情,商业,他们可以选择将帖子ID 保存到这三个中的任何一个。
## GOAL ##
我希望能够选择一个Set,点击我选择的Set的添加按钮,并以某种方式捕获我的foreach循环中当前帖子的帖子ID ,并且通过点击功能将插入,此刻我只有这个
Template.summeryArticle.events({
'click .toggle-addToSet': function(e, template) {
var ob = this.id
console.log(ob);
}
});
当我控制日志时,我只获得设置ID 而不是帖子ID。
post id
如果有更好的方法可以实现这一目标,请告诉我。
我做了第二个选项
<template name="summeryArticle">
{{#let article=this}}
<li>
<div class="row col s12 m7">
<div class="card" id="cardId">
<div class="card-image waves-effect waves-block waves-light">
<a href="/latestSingle/{{_id}}"><img src="{{better_featured_image.source_url}}"></a>
</div>
<div class="card-content">
<h5 class=" truncate grey-text text-darken-4">{{title.rendered}}</h5>
<a href="/latestSingle/{{_id}}">MORE</a> <a href="#modal2" class="modal-trigger waves-effect waves-light" onclick="Materialize.showStaggeredList('#bottom-options')"><i class="waves-effect waves-teal small material-icons right">playlist_add</i></a>{{>
likePartial}}{{> reblogPartial}}
<!-- The modal below is what brings up all the sets the user has created so that the user can pick with set they wat to save the article in -->
<div id="modal2" class="modal bottom-sheet">
<div class="modal-content">
<div class="row">
{{#each set}}
<div class="col s6 m6 addSet teal">
<div class="card ">
<div class="card-image">
<span class="card-title cardSet">{{name}}</span>
</div>
<div class="card-footer">
{{#each s in set}}
<button type="button" class="btn toggle-addToSet" name="button" data-setid="{{s._id}}" articleid="{{article._id}}">add Article Id to this Set!</button> {{/each}}
</div>
</div>
</div>
{{/each}}
</div>
</div>
</div>
</div>
</div>
</div>
</li>
{{/let}}
</template>
我的助手是这样的
Template.summeryArticle.events({
'click .toggle-addToSet': function(e, template) {
var ob = this
console.log(ob);
var sid = $(e.currentTarget).data('setid');
var aid = $(e.currentTarget).data('articleid');
console.log(sid);
console.log(aid);
}
});
然而,这就是我所得到的。
,日志看起来像这样
其中7MgLCEnTWjXFRhLg6
是Sets_id,具体取决于我点击的三个按钮中的哪一个
当我这样做时
<template name="summeryArticle">
{{#let article=_id}}
<li>
<div class="row col s12 m7">
<div class="card" id="cardId">
<div class="card-image waves-effect waves-block waves-light">
<a href="/latestSingle/{{_id}}"><img src="{{better_featured_image.source_url}}"></a>
</div>
<div class="card-content">
<h5 class=" truncate grey-text text-darken-4">{{title.rendered}}</h5>
<a href="/latestSingle/{{_id}}">MORE</a> <a href="#modal2" class="modal-trigger waves-effect waves-light" onclick="Materialize.showStaggeredList('#bottom-options')"><i class="waves-effect waves-teal small material-icons right">playlist_add</i></a>{{> likePartial}}{{> reblogPartial}}
<!-- The modal below is what brings up all the sets the user has created so that the user can pick with set they wat to save the article in -->
<div id="modal2" class="modal bottom-sheet">
<div class="modal-content">
<div class="row">
{{#each s in set}}
<div class="col s6 m6 addSet teal">
<div class="card ">
<div class="card-image">
<span class="card-title cardSet">{{name}}</span>
</div>
<div class="card-footer">
<button type="button" class="btn toggle-addToSet" name="button" data-setid="{{s._id}}" articleid="{{article._id}}">add Article Id to this Set!</button>
</div>
</div>
</div>
{{/each}}
</div>
</div>
</div>
</div>
</div>
</div>
</li>
{{/let}}
</template>
我明白了
这里发生的事情是,我的文章是按照类别进行组织的,所以现在发生的事情是被捕获的article=_id
是该类别中的最后一篇文章,无论如何我试图添加哪些文章,它只是一篇文章被抓住,而它总是在底部。我不知道为什么
答案 0 :(得分:1)
有几种方法。一个是这样的:
我希望文章ID和设置ID to toggle-addToSet按钮的数据属性:
<button type="button" class="btn toggle-addToSet" name="button" data-setid="SETID" data-articleid="ARTID">add Article Id to this Set!</button>
如果你打电话给你的summeryArticle:
{{#each article in articles}}
{{>summeryArticle article=article}}
{{/each}}
(另一个选择是使用let
- 帮助:
<template name="summeryArticle">
{{#let article=this}}
...
{{/let}}
</template>
然后在你的summeryArticle-template中你可以在sets-loop中获得文章ID:
{{#each s in set}}
<button type="button" class="btn toggle-addToSet" name="button" data-setid="{{s._id}}" articleid="{{article._id}}>add Article Id to this Set!</button>
{{/each}}
然后在模板事件中:
Template.summeryArticle.events({
'click .toggle-addToSet': function(e, template) {
var ob = this.id
console.log(ob);
var sid = $(e.currentTarget).data('setid');
var aid = $(e.currentTarget).data('articleid');
Sets.update({_id: sid}, {$addToSet: {ArticlesId: aid}});
}
});
注意!
这假设您可以直接从客户端更新您的收藏!根据您的具体情况,但通常不建议这样做。通常,您应拒绝客户端更新并使用更新集合的方法:
Method.call('mymethd', sid, aid, function(e, r) {
if (!e) {
console.log(r);
} else {
console.error(e);
}
});