2011-04-17 16 views
11

¿Cuál es una buena manera de organizar vistas? Digamos que tengo un div que contendrá una vista desde la perspectiva del panel de administración de los usuarios: habrá una lista de usuarios junto con opciones para elegir cuántos mostrar a la vez, ordenar opciones, en qué página estar, filtros, etc ...backbone.js - vistas dentro de vistas y administración de eventos

¿Desearía una vista exterior que contuviera todo excepto la tabla y los datos? ¿Y luego una vista interior que contiene la tabla (junto con los datos)? ¿Y la paginación tendría su propia vista? ¿Y cómo usaría la vista de paginación el evento click para actualizar la vista del usuario? Simplemente estoy confundido sobre cómo organizar las vistas sin dejar de tener diferentes eventos que disparan otras vistas al render()/collections al fetch().

lo tanto, una jerarquía básica se vería así:

- User View 
    - Table 
    - List of Users 
    - Pagination 
    - List of available numbers to click 
    - Filters 
    - Possible filters to apply to the data 

Sin embargo, hacer clic en un filtro o número en la paginación debe ser capaz de obtener la colección de fetch() nuevos datos y actualizar la vista;

+1

No estoy 100% seguro de que entiendo cuál es su pregunta, pero tal vez esta publicación en el blog lo orientará en una buena dirección [Enlazando una colección a vista] (http://liquidmedia.ca/blog/2011/ 02/backbone-js-part-3 /) – dogenpunk

+0

Hay una pregunta similar que respondí sobre la granularidad de la vista: http://stackoverflow.com/questions/4463136/whats-the-appropriate-granularity-for-backbone-js-views/4464570 # 4464570 – Julien

Respuesta

0

Intento reflejar mi estructura MVC del lado del servidor tanto como puedo.

Todo lo que se puede poner en un complemento, lo hago, y luego guardo esos complementos en una ubicación separada para los controladores que llaman a los complementos. Entonces, en su caso, la vista de tabla para la lista de usuarios se mantendría en un plugin de tabla, o posiblemente en el módulo de "usuarios" si fuera un código que realmente solo usaría una vez.

Si necesito anular la salida del complemento, guardo la vista dentro de la carpeta del módulo.

Lo que trato de evitar es almacenar vistas puramente por el tipo de HTML dentro de ellas, así que no almacenaría la vista de un módulo como 'tabla' porque eso generará confusión si más tarde cambia a una lista. Obviamente, si tengo un complemento de 'tabla', la vista para eso será una tabla, pero luego cambiar la vista de JavaScript significa simplemente cambiar la llamada de complemento de 'tabla' a 'lista' de todos modos.

3

I second dogenpunk. Tendría una Colección/Vista de Usuario. Porque toda la jerarquía que describes arriba es sobre esa colección de usuarios. Todas las funciones de él manipulan esa colección y luego usted renueva la Vista del usuario.

Puede tener una segunda Vista de usuario, un Usuario único, vinculado a un Modelo si desea aplicar cambios en el servidor solo para ese usuario.

0

Mis 2 centavos a su pregunta original. Si realmente quieres convertirlo en MV *, una paginación sería una vista, tu tabla sería una vista. Y haga que su colección envíe eventos (disparadores) para cambiar su vista. Y otra pregunta que me haría a mí mismo también es ¿qué se verá afectado cuando cambie mi colección? Por ejemplo, en su caso, no creo que los cambios en la recopilación afecten a su userView directamente, solo afecta a la tabla y la paginación.

Cuestiones relacionadas