javascript - 使用firebase编辑表格行javascript
问题描述
我有一个表格,它是通过 Firebase 动态增加的,我需要在表格的每一行上都有一个编辑按钮。我在使用编辑按钮时遇到问题,如何根据每个用户的 id 更新数据并保存此更新,然后显示带有更新的表格。
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
<thead>
<tr>
<th>Email</th>
<th>Password </th>
<th>edit</th>
</tr>
</thead>
<tbody id="tablel">
</tbody>
</table>
</div>
</div>
Javascript
var ref = firebase.database().ref("Puser");
ref.on('value',function(snapshot){
var content ='';
snapshot.forEach(function(data){
var val = data.val();
content += '<tr>';
content += '<td>' + val.email +'</td>';
content += '<td>' + val.email +'</td>';
content += '<td><button onclick="Update_State()"> edit</button></td>';
content += '<td><button > save </button></td>';
content += '</tr>';
});
$('#tablel').append(content);
})
function Update_State(){
}
解决方案
这是一个多步骤的过程:
- 将项目的键添加到您生成的每一行。
- 当用户单击按钮更新正确的节点时使用该键。
第一步需要更改您现有的内容生成脚本:
var ref = firebase.database().ref("Puser");
ref.on('value',function(snapshot){
var content ='';
snapshot.forEach(function(data){
var key = data.key;
var val = data.val();
content += `<tr id="'+key+'">`;
content += '<td>' + val.email +'</td>';
content += '<td>' + val.email +'</td>';
content += '<td><button onclick="Update_State(\''+key+'\')"> edit</button></td>';
content += '<td><button > save </button></td>';
content += '</tr>';
});
$('#tablel').append(content);
})
如您所见,我对您的代码进行了更多更改:
- 正确缩进每个级别,这极大地有助于使您的代码具有可读性。仅此一项就使您更有可能发现其中的问题,也使这里的某人更有可能提供帮助。
- 获取每个子节点的键,然后将其添加到行和处理程序中
onclick
。只需要一个或另一个,但我觉得两者都做起来更舒服。¯_(ツ)_/¯ - 使用 `` 而不是
append
,否则当有人对其中一行进行更改时,您会不断添加越来越多的行。
现在,您可以使用Update_State
函数中的键在正确的子节点上调用数据库:
function Update_State(key){
console.log(key);
var ref = firebase.database().ref("Puser");
ref.child(key).update({ property: "value" });
}
推荐阅读
- rest - Vertx EventBus 回复“特定”消息
- javascript - 使用 Vue.JS 删除多维数组中的值
- javascript - 如何从js中的对象获取值?
- python - 在 get_context_data 中更改查询集后分页不起作用
- python - 在每次迭代时为动态大小的张量创建占位符
- java - Java 应用程序服务器执行堆栈线程亲和性
- react-native - 反应原生动画
- angular - 如何取消 Angular 6 上正在进行的 HttpClient 请求
- c# - Asp.NET Core MVC 基于角色的授权
- symfony - Symfony,Twig:无法使用类 js-datetimepicker 将当前日期时间分配给输入