Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.09.2013, 21:38
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

Создание своего класса
(используется extjs 4.2)

Хочу создать свой класс. Наследником является компонент Ext.container.Container.

Ext.define("Ext.container.New_com",
	{
	extend: 'Ext.container.Container',
	alias: "widget.new_com",
	
	initComponent: function()
		{
		this.html = '<div id="' + this.getId() + '-new_com">123</div>';
		var id = obj.getId();
		div = document.getElementById(id + '-new_com');
		
		console.log(div); // !!!

		Ext.container.New_com.superclass.initComponent.apply(this, arguments);
		}
	});


Создаем экземпляр объекта:
Ext.create('Ext.panel.Panel',
	{
    title: 'Hello',
    width: 400,
	height: 300,
    items: [
		{
		width: 100,
		height: 50,
		xtype: 'new_com'
		}],
    renderTo: Ext.getBody()
	});


В консоль выведет null. Нашел такой подход:
Ext.define("Ext.container.New_com",
	{
	extend: 'Ext.container.Container',
	alias: "widget.new_com",
	
	initComponent: function()
		{
		this.html = '<div id="' + this.getId() + '-new_com">123</div>';
		
		setTimeout(function(obj)
			{
			return function()
				{
				var id = obj.getId(),
					div = document.getElementById(id + '-new_com');
				
				console.log(div);
				}
			}(this), 10);
		
		Ext.container.New_com.superclass.initComponent.apply(this, arguments);
		}
	});


в консоль выдаст: <div id="new_com-1010-new_com">123</div>
все верно.

Но вот такая сутуация:
Ext.create('Ext.panel.Panel',
	{
    title: 'Hello',
    width: 400,
	height: 300,
    items: [
		{
		xtype: 'tabpanel',
		items: [
			{
			title: 'tab1',
			html: 'tab1'
			},
			{
			title: 'tab2',
			items: [
				{
				width: 100,
				height: 50,
				xtype: 'new_com'
				}]
			}]
		}],
    renderTo: Ext.getBody()
	});

Есть таб панель, создаем 2 вкладки. Где tab2, в консоль при создании объекта выдаст будет null. Я заметил, что в dom элемента нет. Он появляется когда открывается вкладка tab2. Должно быть событие какое то, которое должно вызываться после того как добавится в dom и в этой функции прописывать соответствующий код?? Или как это реализовать?

Я не понимаю. Подскажите пожалуйста.. Чтобы в консоль выводился dom элемент.
Ответить с цитированием
  #2 (permalink)  
Старый 25.09.2013, 23:07
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

все)) сам нашел, как то так:
Ext.define("Ext.container.New_com",
	{
	extend: 'Ext.container.Container',
	alias: "widget.new_com",
	
	initComponent: function()
		{
		this.html = '<div id="' + this.getId() + '-new_com">123</div>';
		if (this.listeners == undefined)
			this.listeners = {};
		this.listeners.render = {};
		this.listeners.render.fn = function ()
			{
			var id = this.getId(),
				div = document.getElementById(id + '-new_com');
			
			console.log(div);
			}
		Ext.container.New_com.superclass.initComponent.apply(this, arguments);
		}
	});
Ответить с цитированием
  #3 (permalink)  
Старый 27.09.2013, 05:18
Профессор
Отправить личное сообщение для siber-biber Посмотреть профиль Найти все сообщения от siber-biber
 
Регистрация: 07.08.2013
Сообщений: 214

Сообщение от skrudjmakdak Посмотреть сообщение
(используется extjs 4.2)
Должно быть событие какое то, которое должно вызываться после того как добавится в dom и в этой функции прописывать соответствующий код?? Или как это реализовать?
Надо ждать события afterrender и получать элемент после отрисовки.

Ext.define("Ext.container.New_com",
	{
	extend: 'Ext.container.Container',
	alias: "widget.new_com",
	
	initComponent: function()
		{
		this.html = '<div id="' + this.getId() + '-new_com">123</div>';
		Ext.container.New_com.superclass.initComponent.apply(this, arguments);

		this.on({
			afterrender : function () {
				// здесь элемент уже создан
			},
			scope : this
		});

		}
	});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание своего сайта help sovereignsouls Элементы интерфейса 1 24.02.2013 10:36
Использование классов в JavaScript devote Ваши сайты и скрипты 70 01.02.2013 17:17
Создание объекта класса rom30 ExtJS 2 13.11.2011 23:29
создание класса html на javascript Anastasiya (X)HTML/CSS 3 06.11.2011 15:05
Создание класса в javascript Mykle Общие вопросы Javascript 3 21.09.2010 10:32