2012-05-17 7 views
9

Tengo una aplicación de Windows 8 con una plantilla que contiene un div que quiero mostrar u ocultar en función del valor de una propiedad dentro de un data-win-control="WinJS.Binding.Template". He intentado el siguiente sin suerte:Cómo mostrar/ocultar div en WinJS Template dinámicamente

<div data-win-bind="visible: isMore"> ..content... </div> 

donde isMore es una propiedad booleana del elemento de enlace de datos.

¿Cómo puedo hacer eso? Supongo que la propiedad visible no existe?

Respuesta

14

Tiene razón: la propiedad visible no existe, pero puede controlar la apariencia mediante CSS y un convertidor de encuadernación.

En primer lugar, utilizar WinJS.Binding.converter para crear una función de conversión que convierte un valor lógico en un valor valor para la propiedad CSS display, así:

var myConverter = WinJS.Binding.converter(function (val) { 
    return val ? "block" : "none"; 
}); 

Asegúrese de que la función está disponible a nivel mundial - Yo uso WinJS.Namespace.define a crear colecciones de estos convertidores a las que pueda acceder globalmente

Ahora puede utilizar el convertidor de sus datos de unión para controlar la propiedad CSS display, así:

<div data-win-bind="style.display: isMore myConverter"> ..content... </div> 
+2

aún mejor sería establecer el estilo de visualización a "inicial" en lugar de "bloqueo" por lo que se puede usar también para elementos 'span'. – philk

+0

Uso display: none property ... datos eliminados del elemento pero el elemento con pantalla en blanco existe allí ... Toma el tamaño de la primera fila por defecto. –