similar questions have been answered here'un akılda tutulduğunu akılda tutarak, liste boş olduğunda bir Knockout data-bind='foreach: list'
içinde varsayılan metin veya HTML ekranının nasıl görünebileceğini merak ediyorum. Bağlantı sağlanan sayfadaki'foreach' boş olduğunda varsayılan metin yok
çözümler oldukça bu hizada görünmüyor ve her durumda bir özel böyle bağlayıcı ile bunu gerçekleştirmek için denemek için başka bir yol düşündüm:
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);
}
}
Bu basit gözlenebilirler ile oldukça iyi çalışıyor gibi görünüyor, ancak foreach
bağlayıcı ile çalışmaz, ancak her durumda yukarıdaki bağlantıdaki extender
önerisinin muhtemelen birkaç nedenden dolayı tercih edileceğini düşünüyorum - yukarıdaki kodun bazı uyarıları olacaktır. Yine de, bu örneği burada attım çünkü bir şekilde bir alternatif ve düşünce için yiyecekleri vurgulamaktadır.
Bütün bunlar söylenirken, foreach
içeriğinin yerine varsayılan olarak hangi seçenekleri sunabileceğini bilmek isterim.
biri bu gibi basit bir if
bir sarmalayıcı sağlamaktır:
<!-- ko if: xyz().length -->
// foreach
<!-- /ko -->
<!-- ifnot: xyz().length -->
// default text
<!-- /ko -->
Ancak bu özellikle zarif değil - kod dağınıklığı bir sürü.
Eğer liste boş ya da değil –