Ghi nhớ rằng similar questions have been answered here, tôi đã tự hỏi làm thế nào người ta có thể đi về việc có văn bản mặc định hoặc hiển thị HTML bên trong Knockout data-bind='foreach: list'
bất cứ khi nào danh sách trống.Loại bỏ văn bản mặc định khi `foreach` trống
Các giải pháp trên trang liên kết không có vẻ khá lên đường với điều này, và trong mọi trường hợp, tôi nghĩ một cách khác để cố gắng thực hiện điều này với một phong tục ràng buộc như thế này:
text.default = {
update: function (element, valueAccessor) {
var $e = $(element),
obs = valueAccessor();
function _check_blank() {
// the element has content - so we do nothing
if ($e.text().trim()) {
return;
}
// the element is empty;
$e.text("Default Text")
}
// we use setTimeout to ensure that any other bindings complete
// their update
setTimeout(_check_blank, 0);
}
}
này dường như hoạt động tốt với các quan sát đơn giản nhưng nó không hoạt động với ràng buộc foreach
, mặc dù trong bất kỳ trường hợp nào tôi nghĩ đề xuất extender
trong liên kết trên có lẽ thích hợp hơn vì một vài lý do - mã trên sẽ có một số cảnh báo. Tuy nhiên, tôi đã ném ví dụ này ở đây bởi vì nó hơi nổi bật một sự thay thế và thức ăn cho sự suy nghĩ.
Tất cả những gì được nói, tôi muốn biết tùy chọn nào có thể cung cấp mặc định thay cho nội dung foreach
.
Một là để cung cấp một wrapper một cách đơn giản if
, như thế này:
<!-- ko if: xyz().length -->
// foreach
<!-- /ko -->
<!-- ifnot: xyz().length -->
// default text
<!-- /ko -->
Tuy nhiên đây không phải là đặc biệt thanh lịch - rất nhiều mã lộn xộn.
bạn có thể hiển thị một số div nhất định dựa vào danh sách nếu trống hoặc không –