Bedenkt man, dass similar questions have been answered here, ich frage mich, wie man Standardtext oder HTML-Anzeige in einem Knockout data-bind='foreach: list'
immer wenn die Liste leer ist.Knockout Standardtext, wenn `foreach` leer ist
Die Lösungen auf der verlinkten Seite scheinen nicht ganz mit diesem Line-Up, und in jedem Fall dachte ich an einem anderen Weg, dies zu versuchen, zu erreichen mit einem benutzerdefinierten wie dieser Bindung:
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);
}
}
Dieses scheint mit einfachen Observablen recht gut zu funktionieren, aber es funktioniert nicht mit der foreach
Bindung, obwohl ich in jedem Fall denke, dass der extender
Vorschlag in der obigen Verbindung wahrscheinlich aus einigen Gründen vorzuziehen ist - der obige Code hätte eine Reihe von Vorbehalten. Nichtsdestotrotz habe ich dieses Beispiel hier hinein geworfen, weil es eine Alternative und Denkanstöße etwas hervorhebt.
Alles was gesagt wird, würde ich gerne wissen, welche Möglichkeiten gibt es für die Bereitstellung eines Standards anstelle von foreach
Inhalt.
One ist ein Wrapper in einem einfachen if
zu bieten, wie folgt aus:
<!-- ko if: xyz().length -->
// foreach
<!-- /ko -->
<!-- ifnot: xyz().length -->
// default text
<!-- /ko -->
Dies ist jedoch nicht besonders elegant - viel Code Krempel.
Sie einige bestimmte div –