2015-04-17 47 views
0

下面的代码工作正常..使用,如果在淘汰赛排序例如条款

<div class="student" data-bind="text: gender()+'-'+name()"></div> 

但是,当我做以下,如果子句没有考虑到所有的项目都[M]追加到他们..

<!-- ko if: gender()=="male" --> 
      <div class="student" data-bind="text: '[M]'+name()"></div> 
      <!-- /ko --> 

Jsfiddle

任何帮助表示衷心感谢..

谢谢

回答

2

我不确定为什么IF语句不直接工作,但可以通过删除IF语句并在元素上添加可视来实现相同的功能。

http://jsfiddle.net/UdXr4/770/

<div class="student" data-bind="visible:gender() =='male', text: '[M]'+name()"></div> 

瞎猜,但我想你也需要女性,以及...这将是一个更好的方式来实现它..

http://jsfiddle.net/UdXr4/772/

<div class="student" data-bind="text: (gender() == 'male' ? '[M]':'[F]') + name()"></div> 
+0

下一个肯定是一个使用为可见:性别()==“男性”使元素得到复制,而不是拖动时移动.. – Arnab

4

我觉得这个信息与docs是相关的

注:可排序绑定假定子模板具有单个容器元素。您不能在模板的顶层使用无容器绑定(基于注释的)绑定,因为jQuery可拖动/可排序功能需要元素才能操作。

我怀疑这会达到一样的,你打算

<div class="seats" data-bind="sortable: { data: students, allowDrop: $root.isTableFull }">    
    <div class="student" data-bind="visible: gender() == 'male', text: '[M]'+name()"></div> 
    <div class="student" data-bind="visible: gender() == 'female', text: '[F]'+name()"></div> 
</div> 

更新小提琴:http://jsfiddle.net/UdXr4/771/

+0

加上一个很好的信息真的。欢呼的人。 –

+0

感谢您的解释,但使用visible:gender()=='male'使应用程序无法像以前一样工作。如果我使用它,那么被拖回可用的学生后,其中的元素不会被移动,而是被复制。任何想法为什么会发生? – Arnab