2017-08-07 71 views
1

使用knockout JS,我該如何應用條件with綁定到HTML?有條件的「With」綁定到數據綁定

我有兩個observable,任一個應該基於一個條件使用相同的html代碼。我想要做這樣的事情:

如果some-condition

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

其他:

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

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

</div> 
+0

你有沒有嘗試重構你的代碼,所以這如果邏輯是在你的模型引擎蓋下完成的,你有一個綁定在HTML? – encoree1337

+0

問題已編輯。 – Danielle

回答

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

可以綁定有條件地觀察with這樣的綁定。

查看此fiddle的演示。

+0

使用這個我得到的錯誤: _Cannot找到結束評論標籤來匹配:ko如果:some-observable(); _ 儘管它在最後,建議 – Danielle

+1

是的,似乎比這更簡單。查看更新後的答案。我還附帶演示的小提琴。 – Nisarg

+1

真棒 - 作品很棒:) – Danielle

0

您可以使用註釋標籤:

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

您的回答存在的問題是,寫入'div'的代碼必須寫兩次。 – Nisarg

+1

的確如此:)但是原始問題並不十分清楚在這兩種情況下'div'的內容是否相同。我沒有想過在'with'綁定中使用條件。更優雅! –