Tôi đang sử dụng jquery quicksearch để tìm kiếm một bảng đang được phổ biến bởi vòng lặp forout loại bỏ. yếu tố tìm kiếm nhanh cần phải bắt đầu sau khi kết thúc foreach. Tôi đã thử một số cách tiếp cận, nhưng đã không thành công cho đến nay.knockout - thực thi mã sau khi mục cuối cùng đã được trả lại
Tôi đã thử sử dụng 'afterRender', nhưng không thể xác định xem mục hiện tại là mục cuối cùng trên bộ sưu tập, tôi cũng đã thử sử dụng bindingHandlers, nhưng sau đó tôi nhận được bộ sưu tập có độ dài 0 thay thế chiều dài 2005.
vậy:
- phương pháp tốt nhất để tìm kiếm các yếu tố cuối cùng trong một vòng lặp foreach là gì?
- cách tốt nhất để triển khai nó trong trường hợp cụ thể này là gì?
đây là quan điểm của tôi:
<tbody data-bind="foreach: containers">
<tr>
<td><span data-bind="text: code"></span></td>
<td><span data-bind="text: typeName"></span></td>
<td><span data-bind="text: parentClient"></span></td>
<td><span data-bind="text: client"></span></td>
<td>
<a data-bind="attr: { onclick: deleteUrl }">
<i class="icon-trash"></i>@delete </a>
|
<a data-bind="attr: { href: editUrl }">
<i class="icon-edit"></i>@edit</a>
|
<a data-bind="attr: { href: qrUrl }" target="blank">
<i class="icon-qrcode"></i>
@printQr
</a>
</td>
</tr>
</tbody>
và đây là mã loại trực tiếp của tôi:
function Container(data) {
var self = this;
self.id = ko.observable(data.Id);
self.code = ko.observable(data.Code);
self.typeName = ko.observable(data.TypeName);
self.parentClient = ko.observable(data.ParentClient);
self.client = ko.observable(data.Client);
self.deleteUrl = ko.computed(function() {
return "GetModal('/Containers/Delete/" + data.Id + "','containerModal');";
});
self.editUrl = ko.computed(function() {
return '/Containers/Edit/' + data.Id;
});
self.qrUrl = ko.computed(function() {
return '/Qr/Index/10?entity=' + data.Id;
});
}
function ContainersViewModel() {
var self = this;
self.containers = ko.observableArray([]);
self.counter = ko.computed(function() {
return self.containers().length;
});
$.getJSON("/Containers/Json", function (data) {
var containers = $.map(data, function (item) {
return new Container(item);
});
self.containers(containers);
});
};
ko.applyBindings(new ContainersViewModel());
Cảm ơn rất nhiều!
Nir
cảm ơn Ricardo !, tôi đã thử nó, nhưng biểu thức này: 'this.foreach [this.foreach.length - 1]' trong phần 'if statement' luôn luôn đánh giá là không xác định. bất kỳ suy nghĩ nào? –
xấu của tôi - tôi vô tình đã viết chức năng ngay bên ngoài viewmodel chính nó (một điều buổi sáng ..) cảm ơn! –