2012-06-14 6 views
7

Acabo de encontrarme con otro problema con mi lista ordenable de tareas pendientes hecha con el complemento Knockout and Knockout-sortable.¿La vinculación de "si" no funciona con la expresión en una lista ordenable?

Necesito poner un delimitador rojo debajo del elemento colocado en la hora actual y cancelar la ordenación si un elemento cae antes de ese delimitador.

He intentado con un enlace "visible" y funciona de alguna manera, pero el enlace visibile solo oculta el elemento DOM y arruina el índice de matriz ordenable, añadiéndole un elemento innecesario.

<div class="delimiter" data-bind="visible: time() == $root.limit()"></div> 

El "si" vinculante sería mejor porque insertar elemento DOM sólo si es necesario, pero la expresión que se utiliza con visibles siempre se evalúa a verdadero y no puedo entender por qué ...

<div class="delimiter" data-bind="if: time() == $root.limit()"></div> 

Aquí es el violín: http://jsfiddle.net/ingro/VaqqF/

se aprecia Cualquier ayuda, gracias!

Respuesta

17

Simplemente ha malinterpretado el if-binding: elimina el contenido del nodo al que se ha aplicado, no el nodo en sí. Si desea eliminar un nodo sin crear una envoltura alrededor de ella (que se puede utilizar para agregar la unión), existe también el comentario de una versión del caso vinculante, llamada la sintaxis de flujo de control sin contenedor:

<!-- ko if: time() == $root.limit() --> 
    <div class="delimiter"></div> 
<!-- /ko --> 

http://jsfiddle.net/VaqqF/11/

Ref: http://knockoutjs.com/documentation/if-binding.html

+0

Bueno, yo realmente mal practicados éste, gracias por la explicación! :) – Ingro

+1

Gracias por esto, el ejemplo en los documentos no está claro: http://knockoutjs.com/documentation/if-binding.html Utilizan el enlace "si" para mostrar/ocultar texto dentro de un div (técnicamente su contenido). Un mejor ejemplo sería un divisor de datos vinculante de datos con un tramo interno y el div externo tiene un color de fondo (o algo así). –

Cuestiones relacionadas