2012-09-27 16 views
6

Parece que me estoy perdiendo algo estúpido aquí, pero ¿cuál es el método recomendado para escuchar el evento click en una vista de lista?Escuchando evento de clic en ListView

Por el momento tengo:

WinJS.Utilities.query(".menuHolder").listen("click", linkClickHandler, false); 

Y mi plantilla de vista de lista utiliza la clase 'menuHolder' por sus artículos:

  <div id="menuTemplate" 
      data-win-control="WinJS.Binding.Template"> 
      <div class="menuHolder"> 
       <!-- menu img --> 
       <img src="#" data-win-bind="src : pic; alt : title" /> 

       <div class="menuText"> 
        <!-- menu text --> 
        <h1 data-win-bind="innerText : title"></h1> 
        <!-- menu desc --> 
        <h4 data-win-bind="innerText : description"></h4> 
       </div> 
      </div> 
     </div> 

que no parecen golpear a mi punto de interrupción, en mi controlador de enlace, o invocar su función. ¿Alguna idea?

EDIT:

Como continuación de la pregunta (teniendo en cuenta el evento invocado artículo) es cualquiera que conozca el enfoque recomendado para pasar datos entre una vista de lista y el evento iteminvoked, si digo que quería utilizar la clase WinJS.Navigator para moverse por una aplicación? Supongo que necesito echar una parte del eventInfo en un objeto adecuado y recuperar información, ¿qué parte?

Respuesta

6

Suponiendo que los datos que desea "pasar" son los datos que se une al elemento que se invoca, se puede hacer que en los argumentos de eventos que se transmiten en el caso iteminvoked. Una de las minas se parece a esto ...

demosLV.oniteminvoked = function(e) { 
    e.detail.itemPromise.then(function(item) { 
     var location = format("/pages/{0}/{0}.html", item.data.key); 
     WinJS.Navigation.navigate(location, item.data); 
    }); 
}; 

Así que la demosLV es el ListView. Estoy configurando el oniteminvoked a una función. Esa función recibe "e" cuando el evento args. En la función, accedo a e.detail.itemPromise y cuelgo un .entonces fuera de él. Luego accedo a los datos reales en el .then using item.data. Espero que sea eso lo que quiso decir. Por cierto, la función de formato es una de las mías en caso de que te preguntes por qué no funciona para ti.

+0

Ah, genial, fue el detalle.Principó el lado de las cosas que me faltaba, anteriormente solo había utilizado la propiedad href de los hipervínculos, por lo que no estaba seguro de cómo llegar a los datos. Gracias. – dougajmcdonald

4

Parece que estaba siendo una salchicha, necesitaba escuchar el evento 'iteminvoked' en la referencia padre de la lista de identificación, no en el nivel secundario.

WinJS.Utilities.query("#menu").listen("iteminvoked", linkClickHandler, false);