こんにちは、KnockoutJs を使用してテーブルで複数の行を削除しようとしています。テーブルで使用しようとすると、コードが機能しない理由がわかりません。私はこれをulで試してみましたが、うまく機能しています。
以下は私のコードです。事前に助けが必要です:(
HTML:
<table class="pure-table" id="tbl_ordered_products">
<thead>
<tr>
<th><input type="checkbox" id="chkAllProducts" /></th>
<th>Product Code</th>
<th>Product Name</th>
<th>Price</th>
<th>Quantity</th>
<th>Discount Rate</th>
<th>Stock Balance</th>
<th>Total Discount</th>
<th>Orig. Price</th>
<th>Total</th>
</tr>
</thead>
<tbody data-bind="foreach: orderedProducts">
<tr>
<td><input type="checkbox" id="chkAllProducts" data-bind="value: $data, checked: $parent.selectedOrderedProducts"/></td>
<td data-bind="text: product_code"></td>
<td data-bind="text: name"></td>
<td data-bind="text: price"></td>
<td><input data-bind="value: quantity" /></td>
<td><input data-bind="value: discount" /></td>
<td data-bind="text: balance"></td>
<td data-bind="text: total_discount"></td>
<td data-bind="text: original_price"></td>
<td data-bind="text: total_price"></td>
</tr>
</tbody>
</table>
<input type="button" value="Remove Selected" data-bind="click: deleteSelectedProducts" />
私のJS:
function Product(id, product_number, name, price, quantity, discount, balance) {
var self = this;
self.id = ko.observable(id);
self.product_code = ko.observable(product_number);
self.name = ko.observable(name);
self.price = ko.observable(price.toFixed(2));
self.quantity = ko.observable(quantity);
self.discount = ko.observable(discount);
self.balance = ko.observable(balance);
}
function OrdersViewModel() {
var self = this;
self.customerCode = ko.observable();
self.full_name = ko.observable();
self.complete_address = ko.observable();
self.birthday = ko.observable();
self.email = ko.observable();
self.contact = ko.observable();
self.orderedProducts = ko.observableArray();
self.selectedOrderedProducts = ko.observableArray();
self.deleteSelectedProducts = function () {
alert(self.selectedOrderedProducts.length);
self.orderedProducts.removeAll(self.selectedOrderedProducts());
self.selectedOrderedProducts.removeAll();
}