挖空.js单击按钮后使用数据创建新记录
knockout.js create new record with data after clicking a button
我想填写两个输入字段,然后单击按钮"提交"它们,并将它们显示在新创建的表格行中。敲除有可能这样的事情吗?如果是这样,我该如何实现它?
<p>First name: <input data-bind="value: firstName" /></p>
<p>Last name: <input data-bind="value: lastName" /></p>
<a class="btn btn-primary btn-lg" role="button" >Add</a>
<div class="panel panel-default">
<div class=panel-heading>Your data</div>
<table class=table>
<thead>
<tr>
<th>First name</th>
<th>Last name</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
使用可观察数组作为绑定http://knockoutjs.com/documentation/observableArrays.html
向链接添加数据绑定
<a class="btn btn-primary btn-lg" role="button" data-bind="click: add()" >Add</a>
假设已将视图模型定义为 vm,请执行以下操作:
将可观察数组添加到视图模型
vm.myarray = ko.observableArray();
向视图模型添加函数
vm.add = function() {
vm.myarray.push({firstName: firstName, lastName: lastName };
}
向表行添加绑定
<tr data-bind="foreach: myarray">
<th data-bind="text: firstName"></th>
<th data-bind="text: lastName"></th>
</tr>
你可能想要的是一个可观察的数组。它的工作方式与您拥有的其他可观察量一样,但可以包含许多对象。
将其与foreach
绑定相结合,您就有了填写表格的配方。
var AppViewModel = function() {
this.firstName = ko.observable();
this.lastName = ko.observable();
this.records = ko.observableArray();
};
var model = new AppViewModel();
$('.btn').click(function() {
// Create a record on click
model.records.push({
firstName: model.firstName(),
lastName: model.lastName()
});
});
ko.applyBindings(model);
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<p>First name: <input data-bind="value: firstName" /></p>
<p>Last name: <input data-bind="value: lastName" /></p>
<a class="btn btn-primary btn-lg" role="button" >Add</a>
<div class="panel panel-default">
<div class=panel-heading>Your data</div>
<table class=table>
<thead>
<tr>
<th>First name</th>
<th>Last name</th>
</tr>
</thead>
<tbody data-bind="foreach: records">
<tr>
<td data-bind="text: firstName"></td>
<td data-bind="text: lastName"></td>
</tr>
</tbody>
</table>
</div>
如果不使用 jQuery,则可以使用普通事件侦听器设置单击绑定。
document.querySelector('.btn').addEventListener('click', function() {
model.records.push({
firstName: model.firstName(),
lastName: model.lastName()
});
});
更好的是,您可以使用Denis Pitcher所说的,并为模型提供一种使用data-bind="click: add()"
应用的方法。
相关文章:
- 使用外部数据创建仪表板(谷歌电子表格)-JavaScript
- 从html表中的输入数据创建图表
- 使用来自不同循环Javascript的数据创建数组
- 在d3forjavascript中,如何为数据创建不同的元素
- 如何使用json数据创建下拉列表
- 使用 mysql 数据创建条形图
- 在javascript中使用给定的数据创建Json
- Jquery:为新数据创建寻呼机(next-prev按钮)
- 为Meteor数据创建编号列表
- 如何创建和下载PDF和docx格式的文件,该文件将从AngularJS中的表中的数据创建
- 为数据创建唯一变量
- 如何使用旧数组中的数据创建新数组
- 使用外部数据创建体式任务
- 将数据从一个工作表复制到另一个工作表;使用目标工作表中的复制数据创建一个表
- 我可以在谷歌地图上使用OpenStreetMap数据创建获取路线吗?如何
- 如何为具有嵌套对象的 JSON 数据创建 Mustache 模板
- 如何使用 import.io 中的数据创建 Web 应用
- 从 CSV 数据创建 D3.js 可折叠树
- 如何使用SQLite数据创建Javascript var
- 使用 AJAX 数据创建注释页选择