我在尝试使用以下Meteor包时遇到问题:dandv:jquery-rateit。
我将它用于票证系统,其中每个更新都有一个开始评级。但是当我有超过1条评论时,第二条评论总是返回0值。
这是我的代码:
JS:
Template.rating.events({
'click .rateit': function(e){
var rating = $('#rate').rateit('value');
console.log(rating);
Session.set('UpdateId', this._id);
var UpdateId = this._id;
console.log(UpdateId);
/*Meteor.call('saveRate',rating,UpdateId);*/
return false;
}
});
Template.rating.rendered = function () {
this.$('.rateit').rateit();
}
HTML:
<template name="Update">
{{#each Updates}}
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title" align="center">Update</h3>
</div>
<div class="panel-body">
<table class="table">
<tr>
<td width="15%" nowrap align="left">Created By:</td>
<td width="35%" align="left">{{createdBy.username}}</td>
<td width="15%" nowrap align="left">Created At:</td>
<td width="35%" align="left">{{formatDate createdAt}}</td>
<td width="15%" nowrap align="left">Rating:</td>
<td width="35%" align="left">{{> rating}}</td>
</tr>
<tr>
<td colspan="4">{{description}}</td>
</tr>
</table>
</div>
</div>
{{/each}}
</template>
<template name="rating">
<div class="rateit" id="rate"></div>
</template>
现在,当我尝试评价第二条评论时,返回0.屏幕截图:http://screencast.com/t/ejaTI98X
无论我选择哪个星,它总是返回0.我认为错误应该在HTML中。
我非常感谢你的帮助。如果您有任何疑问,请告诉我。
度过美好的一天。
答案 0 :(得分:0)
您迭代更新,我认为有多个更新。对于每次更新,您都会调用模板{{&gt; rateit}},然后使用id = rate呈现div,这样您最终会得到几个具有相同ID的div,因此您根本不知道哪一个$( &#39;#rate&#39;)您正在访问。
在事件处理程序中,您还使用全局jQuery处理程序。
我建议您使用以下模式来将jQuery本地范围扩展到模板上下文
Template.rating.events({
'click .rateit': function(e,template){
var rating = template.$('.rateit').rateit('value');
console.log(rating);
Session.set('UpdateId', template.data._id);
var UpdateId = template.data._id;
console.log(UpdateId);
/*Meteor.call('saveRate',rating,UpdateId);*/
return false;
}
});