Foro

COMO INCLUIR FILES JS EN Y PODER USAR SUS VARIABLES Y/O ELEMENTOS

0
Buenas,  tengo otra duda como puedo incluir  o unir   varios files de en JS? 
Es decir si tengo un GRID con datos de una BD y quiero hacer un filtro al click  cuando  dan click  sobre un  boton que esta en OTRO DOCUMENTO. 
Para mi filtros suelo usar   store.load, perooo siempre uso elementos que estan en el  mismo file.. que pasa si quiero hacer el store load .. desd otro   file?
 SE PUEDE?  alguna orientacion por favor, o ejemplo.
Graciasssssssss






0
Cabe resaltar que esos  Files NO estan  instanciados en el mismo documento  HTML. aúnque pueden estarlo.
0
Realmente cuando importas todos tus archivos JS al documento HTML, todo, absolutamente todo es cargado en memoria y tienes acceso a todo lo que has cargado.

Usuarios.js

var Usuarios = function(){
    this.store = new Ext.data.Store(...)
}

 

GridUsuarios.js

var UsuariosGrid = function(){
     var data = new Usuarios(); //<--- clase del archivo Usuarios.js
 
      data.store.load();
}

 

Y en tu HTML
<script src="Usuarios.js"></script>
<script src="GridUSuarios.js"></script>

Primero importas Usuarios.js ya que es utilizada dentro de GridUsuarios.js.

Saludos

0
Crysfel,  intente hacerlo como mencionas pero no reconoce el elemento. 
Cada vez que llamo a mi variable donde puse mi "GRID"  sale que no existe o no encontró el elemnto, apesar que los 2 estan en el mismo html..  


<script type="text/javascript" src="JS/reporte_general.js"></script>
	<script type="text/javascript" src="general.js"></script>  

 Intento usar en general  una variable que contiene un Grid en reporte_general.js  pero no consigo hacerlo :(

Crysfel Villa: Puedes poner un poco de código de esos archivos? 22/10/2014
0
Este es de reporte General:  
var grid = new Ext.grid.GridPanel({
				columnLines: true,
            	store: store, 
		
            	columns: [
				{header: 'Fecha Accesoo', dataIndex: 'FECHA_ACCESO', width: 90, align: 'center', sortable: true,
				renderer: evaluar,locked: true, renderer: Ext.util.Format.dateRenderer('d-m-Y')},

				{header: 'Usuario', dataIndex: 'usuario', width: 90, align: 'center', sortable: true, renderer: evaluar }
	
            ],
			tbar: [
				 	{
			xtype: 'label',
			style: 'padding-left:5px',
			text: 'Filtro por Incidencdia:'	
		},
				
		{
			xtype: 'tbspacer',
			width: 15
		},
		combo
	
			],
			
            bbar: paginacion,
        
		height: 400,

		 width: '100%',

		 title: 'Registros'
        });

		 grid.render('frame');	
		});
Esta es de General. js

 var center = new Ext.Panel ({ id : 'center', region : 'center', layout: 'card', activeItem: 0, border : false, margins : {bottom:0,right:3}, items:[general] });

 en el items:  en vez de "general"  quiero agregar la variable del GriD.
Cabe resaltar, que intente quitar el render del grid para ponerlo abajo y igual me salio el error .

obvia algunos errores de "comas" ya que quite buena parte del codigo. .

0
Me parece que la variable grid esta dentro de una función o algo, es decir, no esta en el global scope, por eso no la puedes usar en ningún otro lado. Te recomiendo crear un paquete global donde pongas todos los objetos y componentes que quieres compartir, la idea es evitar llenar de variables el global scope, ejemplo:

reporte_general.js
Ext.ns('MyApp.views.reportes');

MyApp.views.reportes.General = new Ext.grid.GridPanel({.....});

 general.js

Ext.ns('MyApp.views.layouts');

MyApp.views.layouts.Center = new Ext.Panel({
    ...
    items : [MyApp.views.reportes.General]
});

 De esta manera solo tendrás un unico objeto en el global scope "MyApp" (Utiliza un nombre propio de tu aplicación), y sobre ese objeto puedes ir guardando las referencias a tus otros componentes.

Generalmente se usan clases en lugar de instancias, pero eso es otro tema un poco más avanzado, por el momento te debería funcionar bien la opción que te propongo.

Saludos

Jesús Méndez: Gracias ahora lo probaré !! por lo que mencionaste, mi variable GRID no esta en ninguna función, solo esta en la funcion OnReady pero eso causa que no peuda reconocerlo? Por otro lado, lo que me acabas de enviar lo peudo poner dentro del onready o como? Saludos, 22/10/2014
Crysfel Villa: Exactamente, ese es el problema, la variable grid solo existe en el scope del onReady y no se puede usar en ningún otro lado. Si no mal recuerdo el método Ext.ns siempre crea los objetos en el global scope, así que si puedes usarlo. 22/10/2014
0
Listo acaba de salirme, sin embargo estoy intentando hacer lo mismo desde un  tree dando click.   y me arroja un error:  de que no encuentra el objeto,  este es el codigo:
var web = MyApp.views.reportes.grid;

	Ext.getCmp('center').add({
			
			id    : objeto,
		 	items: [web]
		//html  : web
	});
		Ext.getCmp('center').doLayout();
		Ext.getCmp('center').layout.setActiveItem(objeto);
 
En codigo funciona, pero solo del "GRID"  carga el titulo más no la tabla completa, Crysfel alguna idea porfa? ... porq solo carga el titulo del grid :/



¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook

Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.