【发布时间】:2018-08-23 00:05:28
【问题描述】:
我这里用的是淘汰赛js。
我有一个 HTML 表格,表格有 4 列。我有按钮向表中添加一行,然后删除每一行的按钮以将其删除。 HTML 表格如下。
<table class="table table-bordered">
<thead class="mbhead">
<tr class="mbrow">
<th>Input</th>
<th>First Name</th>
<th>Last Name</th>
<th>Address</th>
</tr>
</thead>
<tbody data-bind="foreach: items">
<tr>
<td>
<select class="form-control common-input-text" data-bind="event: { change: $root.addNewItem }">
<option value="">One</option>
<option value="">Two</option>
<option value="">Three</option>
</select>
</td>
<td><span class="input-small" data-bind="value: firstName" /></td>
<td><span class="input-small" data-bind="value: lastName" /></td>
<td><span class="input-small" data-bind="value: address" /></td>
<td>
<input type="button" value="Remove Row" data-bind="click: removeRow" class="btn btn-danger" />
</td>
</tr>
</tbody>
</table>
<input type="button" value="Add Row" class="btn btn-primary" data-bind="click: addRow" />
我的淘汰赛为:
(function () {
var ViewModel = function () {
var self = this;
//Empty Row
self.items = ko.observableArray([]);
self.addRow = function () {
self.items.push(new Item());
};
self.removeRow = function (data) {
self.items.remove(data);
};
}
var Item = function (fname, lname, address) {
var self = this;
self.firstName = ko.observable(fname);
self.lastName = ko.observable(lname);
self.address = ko.observable(address);
};
vm = new ViewModel()
ko.applyBindings(vm);
})();
当我单击添加行时,它会添加第一行但给我控制台错误:
knockout.js:73 Uncaught ReferenceError: Unable to process binding "click: >function (){return removeRow }" 消息:removeRow 未定义
当我再次单击添加行时,它给了我另一个控制台错误:
未捕获的错误:您不能将绑定多次应用于同一元素。
当我点击 removeRow 时没有任何反应。
当我注释掉 removeRow 的代码时,我可以添加一个新行。 不知道我哪里错了。
这是我的 jsfiddle:
https://jsfiddle.net/aman1981/nz2dtud6/2/
【问题讨论】:
标签: javascript jquery knockout.js