我正在建立一个SPA在猫鼬,节点,骨干堆栈和使用手。用户注册一个或多个课程。然后,用户可以进入他的课程列表,并取消如果他选择。API可以工作,我可以从数据库中删除课程,从控制台对特定的url进行ajax调用。问题是,我需要ajax调用来从工具栏模板中获取变量。如何从我的工具栏模板捕获{_id}}并将其传递到该模板之外的AJAX删除请求中?
template: Handlebars.compile(
'<h4>{{local.petname}} is a busy beast!</h4>'+
'<h2>Upcoming Courses: </h2>' +
'<ul>'+
'{{#each signup}}' +
'<li><h3>{{name}}</h3>{{coursDay}}{{time}}{{location}}</li>' +
'<a href="/test/signups/{{_id}}" data-id="{{_id}}"" class="btn btn-danger confirm-delete">Remove Course</a><br/><br/>' +
'<li>{{_id}}</li>'+
'{{/each}}'+
'</ul>'
),
下面是我的ajax请求;attrID只返回数组中第一项的ObjectID
deleteItem: function(event) {
event.preventDefault();
var attrID = $('.btn-danger').data();
console.log(attrID);
jQuery.ajax({
url: "/test/signups/" + attrID,
type: "DELETE",
success: function (data, textStatus, jqXHR) {
console.log("Post response:");
console.dir(data);
console.log(textStatus);
console.dir(jqXHR);
}
});
}
发布于 2014-05-30 18:55:15
我有点不确定要在哪里调用deleteItem()
函数,但问题是jQuery选择器:
$('.btn-danger')
选择您的所有链接。您可以将它们重新放入jQuery包装列表中。然后,方法data()
只应用于列表的第一项,因此只会导致第一个节点。您还应该提供参数'id'
,否则您将再次得到一个数组。
假设您希望所有链接都执行AJAX调用,则可以调用:
$('.btn-danger').on('click', function(event) {
event.preventDefault();
var attrID = $(this).data('id');
console.log(attrID);
$.ajax({ ... });
});
编辑:将$(...).live()
(不推荐)替换为$(...).on()
。
你的车把模板data-id="{{_id}}""
也有问题,第二个引号应该删除。
https://stackoverflow.com/questions/23960636
复制相似问题