通过表 html 触发主干.js事件
Triggering Backbone.js event via table html
>我有以下包含表格的html视图模板:
<script id="user-home-main-table-template" type="text/template">
<table class="table">
<thead>
<tr>
<th>Club</th>
<th>Delete?</th>
</tr>
</thead>
<tbody>
<% for(var i=0; i
<teams.length
; i++) { %>
<tr>
<td>
<a href='/users/<%=user._id%>/teams/<%= teams[i]._id%>/teamDashboard'>
<%= teams[i].club %>
</a>
</td>
<td>
<a href='/users/<%=user._id%>/teams/<%= teams[i]._id%>/deleteTeam'>
delete
</a>
</td>
</tr>
<% } %>
</tbody>
</table>
</script>
我想更改它,以便它在 Backbone 中的事件中触发事件,而不仅仅是直接向服务器发出请求:
<script id="user-home-main-table-template" type="text/template">
<table class="table">
<thead>
<tr>
<th>Club</th>
<th>Delete?</th>
</tr>
</thead>
<tbody>
<% for(var i=0; i
<teams.length
; i++) { %>
<tr>
<td>
<a href='/users/<%=user._id%>/teams/<%= teams[i]._id%>/teamDashboard'>
<%= teams[i].club %>
</a>
</td>
<td>
<a href='make a request to Backbone when deleting team'>
delete
</a>
</td>
</tr>
<% } %>
</tbody>
</table>
</script>
这是我的主干视图代码:
var UserHomeMainTableView = Backbone.View.extend({
tagName: "div",
events: {},
initialize: function () {
this.bind();
},
render: function () {
var userHomeMainTableTemplate = document.getElementById('user-home-main-table-template').innerHTML;
this.$el.html(_.template(userHomeMainTableTemplate)());
console.log('userHomeMainTableTemplate rendered');
return this;
}
});
如何在主干视图中触发与具有正确 ID 的团队相关的事件?我需要向骨干发送要删除的团队的 ID。
在UserHomeMainTableView's
events
哈希中,您可以添加click <your_element_selector>
属性,其值为 eventHandlerName
var UserHomeMainTableView = Backbone.View.extend({
tagName: "div",
events: {
'click .table span' : 'deleteTeamById'
},
initialize: function () {
this.bind();
},
render: function () {
var userHomeMainTableTemplate = document.getElementById('user-home-main-table-template').innerHTML;
this.$el.html(_.template(userHomeMainTableTemplate)());
console.log('userHomeMainTableTemplate rendered');
return this;
},
deleteTeamById: function (event) {
//using event fetch the target from that fetch team or user id whatever you need, make sure you add it as an attribute in template and use it
var teamId = $(event.currentTarget).attr('data-team-id');
//Your logic to delete team
}
});
模板可以更改为:
<script id="user-home-main-table-template" type="text/template">
<table class="table">
<thead>
<tr>
<th>Club</th>
<th>Delete?</th>
</tr>
</thead>
<tbody>
<% for(var i=0; i
<teams.length
; i++) { %>
<tr>
<td>
<a href='/users/<%=user._id%>/teams/<%= teams[i]._id%>/teamDashboard'>
<%= teams[i].club %>
</a>
</td>
<td>
<span data-team-id="<%= teams[i]._id%>">
delete
</span>
</td>
</tr>
<% } %>
</tbody>
</table>
</script>
看看这个例子。
相关文章:
- 为什么js事件消失了
- 使用onkeyup JS事件检查输入的值是否唯一
- JS事件未更改输入禁用属性
- jQuery的等价物's$(this)在Ractive.js事件代理中
- Raphael JS事件未开火
- Ajax 请求正在取消页面上的其他 JS 事件
- 当多个 JS 事件调用同一个函数时,如何处理它们
- 主干.js事件处理程序命名的最佳做法
- js事件,用于函数内部的when语句变为true
- React.js事件需要点击2次才能执行
- 单击文档时的Backbone JS事件
- 在添加元素时激发JS事件
- 作为自动化测试的一部分,监控特定的js事件以及执行它们所需的时间
- JS事件CTRL+鼠标悬停+隐藏文本
- Backbone.js事件未启动
- JS调试器是否挂起整个JS事件循环
- js事件循环是否意味着可以为临时暂存空间使用全局变量
- 在Backbone.js视图中拖动gabilly.js事件
- 从本机 java 代码调用 JS 事件
- 主干网.js事件和内存管理