2017-08-07 5 views
1

Mit Knockout JS, wie kann ich eine bedingte with Bindung an HTML anwenden?Bedingte "With" Bindung an Datenbindung

Ich habe zwei Observables, entweder sollte man basierend auf einer Bedingung für den gleichen HTML-Code verwendet werden. Ich möchte so etwas wie dies zu tun:

wenn some-condition:

<div data-bind="with: observable1"> 

anderes:

<div data-bind="with: observable2"> 

     <!-- the below is common code -->    
     <label data-bind: "text: observable-property"></label> 
     <!-- .... --> 

</div> 
+0

Haben Sie versucht, Ihren Code zu refactoring, also dies, wenn Logik unter Haube Ihres Modells durchgeführt wird und Sie eine Bindung in HTML haben? – encoree1337

+0

Frage wurde bearbeitet. – Danielle

Antwort

3
<div data-bind="with: var1() ? var2 : var3"> 
    <div data-bind="text: a"> 
    </div> 
</div> 

Sie können binden eine beobachtbare Bedingung zu die with Bindung wie folgt.

Sehen Sie diese fiddle für eine Demo.

+0

Mit diesem bekomme ich den Fehler: _Cannot Schluss Kommentar-Tag zu finden: ko wenn: einige Observable(); _ Auch wenn es am Ende ist, wie vorgeschlagen – Danielle

+1

Yup, es scheint viel einfacher als das. Siehe die aktualisierte Antwort. Ich habe auch eine Geige mit einer Demo beigefügt. – Nisarg

+1

Super - funktioniert super :) – Danielle

0

Sie Kommentar-Tags verwenden:

<!-- ko if: foo --> 
<div data-bind="with: bar"></div> 
<!-- /ko --> 
<!-- ko ifnot: foo --> 
<div data-bind="with: baz"></div> 
<!-- /ko --> 
+1

Das Problem mit Ihrer Antwort ist, dass der Code innerhalb des 'div' zweimal geschrieben werden müsste. – Nisarg

+1

Stimmt das :) Aber die ursprüngliche Frage war nicht wirklich klar darüber, ob der Inhalt des "div" in beiden Fällen gleich wäre. Und ich hatte nicht daran gedacht, eine Bedingung in der 'mit'-Bindung zu verwenden. Viel eleganter! –