2017-08-07 75 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'绑定中使用条件。更优雅! –