在淘汰可排序示例中使用 if 子句

Using if clause in knockout sortable example

以下代码运行良好..

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

但是,当我执行以下操作时,没有考虑 if 子句并且所有项目都附加了 [M]..

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

Jsfiddle

真诚感谢任何帮助..

谢谢

我不确定为什么 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>

我认为来自 docs 的信息是相关的

Note: The sortable binding assumes that the child "templates" have a single container element. You cannot use containerless bindings (comment-based) bindings at the top-level of your template, as the jQuery draggable/sortable functionality needs an element to operate on.

我怀疑这会达到您预期的效果

<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>

已更新 fiddle:http://jsfiddle.net/UdXr4/771/