2012-05-20 13 views
8

Quiero implementar una página de búsqueda simple usando Backbone. No es una aplicación de una sola página, pero me gustaría estructurar mi código JavaScript usando Backbone. Una página de búsqueda consiste en un formulario de búsqueda y resultados de búsqueda. La búsqueda se realiza a través de AJAX y debe guardarse en el historial. Cuando la página se carga desde el historial, los parámetros de búsqueda deben cargarse en el formulario. El formulario de búsqueda y los resultados de búsqueda se pueden implementar como Backbone.View's. Sin embargo, tengo problemas para pegarlos.Página de búsqueda simple de Backbone: ¿cómo lo harías?

Lo que creo que necesito algún tipo de controlador. Hay un Backbone. Router, pero ¿es el lugar correcto? ¿Dónde debe colocarse la llamada AJAX?

Cualquier consejo sobre la estructura de dicha página es bienvenido.

Respuesta

10

Puede crear un SearchModel. El SearchModel tendría un método como: "performSearch (cadena)" que dispararía su llamada ajax. Cuando la llamada devuelve el modelo podría hacer algo como:

this.set("searchResults", ajaxResult) 

y sus puntos de vista se puede unir a la propiedad del modelo:

// SearchResultsView 
Backbone.View.extend({ 
    initialize: function() { 
     this.model.on("change:searchResults", this.displayResults, this); 
    }, 
    displayResults: function(model, results) { 
     // do whatever... 
    } 
}); 

ejemplo formulario de búsqueda Ver como referencia:

Backbone.View.extend({ 
    events: { 
     "submit": "formSubmitted" 
    }, 
    formSubmitted: function(e) { 
     this.model.performSearch(e.target.value); 
    } 
}); 

ejemplo SearchModel como referencia:

Backbone.Model.extend({ 
    performSearch: function(string) { 
     // fire your ajax request. provide a bound 
     // _searchComplete as the callback 
    }, 
    _searchComplete: function(results) { 
    this.set("searchResults", results); 
    } 
}); 
Cuestiones relacionadas