Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.07.2013, 13:50
Интересующийся
Отправить личное сообщение для serg3091 Посмотреть профиль Найти все сообщения от serg3091
 
Регистрация: 23.06.2013
Сообщений: 15

получение имени кнопки в buttongroup
добрый день подскажите плз, как сделать такую универсальную штуку, что бы при клике получать text элемента, в дальнейшем его ajax`ом отправить на сервак, не хочется просто к каждой букве городить , что то подобное ,
var button = Ext.create('Ext.Button', {
            margin:'10 0 0 30',
            text: 'A',
            renderTo: Ext.getBody()
            listeners: {
                click: function(){
                    alert(button.text);
                },
                scope:this
            }
        });
});

Хочу что то универсальное, что бы потом можно легко добавить скажем целый алфавит другого языка.
Ext.require([
        '*'
    ]);

    Ext.onReady(function() {
        var searchDoc = Ext.create('Ext.panel.Panel', {
            title: 'Panel with ButtonGroup',
            renderTo: Ext.getBody(),
            bbar: [{
                    xtype: 'buttongroup',
                    width: '100%',
                    columns: 11,
                    title: 'Поиск',
                    items: [
                        {text: 'А',id: 'el'},{text: 'Б'},{text: 'В'},{text: 'Г'},{text: 'Д'},{text: 'Е'},
                        {text: 'Ё'},{text: 'Ж'},{text: 'З'},{text: 'И'},{text: 'Й'},{text: 'К'},
                        {text: 'Л'},{text: 'М'},{text: 'Н'},{text: 'О'},{text: 'П'},{text: 'Р'},
                        {text: 'С'},{text: 'Т'},{text: 'У'},{text: 'Ф'},{text: 'Х'},{text: 'Ц'},
                        {text: 'Ч'},{text: 'Ш'},{text: 'Щ'},{text: 'Ъ'},{text: 'Ы'},{text: 'Ь'},
                        {text: 'Э'},{text: 'Ю'},{text: 'Я'}
                    ],
//                listeners: {
//                    click: {
//                        element: Ext.get() , //bind to the underlying el property on the panel
//                        fn: function(){  alert("okok"); }
//                    }
//                }
                listeners: {
                    element: Ext.get("el"),
                    click: {
                        fn: function(el) {
                            alert(el.text);
                        }
                    }
                }
        }]
    });
 });
Ответить с цитированием
  #2 (permalink)  
Старый 09.07.2013, 14:05
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

как вариант:
Ext.onReady(function() {
	var alphabet = ['А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', '...'];
	var objs = new Array();
	for (var i = 0; i < alphabet.length; i++)
		objs[i] = {
			text: alphabet[i],
			listeners:
				{
				click:
					{
					fn: function()
						{
						console.log(this.text)
						}
					}
				}
			};
	console.log(objs)
	
        var searchDoc = Ext.create('Ext.panel.Panel', {
            title: 'Panel with ButtonGroup',
            renderTo: Ext.getBody(),
            bbar: [{
                    xtype: 'buttongroup',
                    width: '100%',
                    columns: 11,
                    title: 'Поиск',
                    items: objs,
                listeners: {
                    element: Ext.get("el"),
                    click: {
                        fn: function(el) {
                            alert(el.text);
                        }
                    }
                }
        }]
    });
 });
Ответить с цитированием
  #3 (permalink)  
Старый 09.07.2013, 14:24
Интересующийся
Отправить личное сообщение для serg3091 Посмотреть профиль Найти все сообщения от serg3091
 
Регистрация: 23.06.2013
Сообщений: 15

спасибо, то что надо, а не поможете ещё чутка, что бы этот кусок был готов уже+) с отправкой ajax поймать на серваке уже сам смогу =)
Ответить с цитированием
  #4 (permalink)  
Старый 09.07.2013, 14:48
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

так с чем вам помочь то?? с аяксом?
на оф сайте есть же пример отправки аякс:
вот урла
http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.Ajax

вот сам пример:
Ext.Ajax.request({
    url: 'request.php',
    params: {
        id: 1
    },
    success: function(response){
        var text = response.responseText;
        console.log(text);
    }
});


можно сделать функцию:
function sendAjax(_text)
	{
	Ext.Ajax.request(
		{
		url: 'request.php',
		params:
			{
			textButton: _text
			},
		success: function(response)
			{
			var text = response.responseText;
			console.log(text);
			}
		});
	}


и в событии вызывайте эту функцию:
...
fn: function()
	{
	sendAjax(this.text);
	//console.log(this.text)
	}
...
Ответить с цитированием
  #5 (permalink)  
Старый 17.07.2013, 12:27
Интересующийся
Отправить личное сообщение для serg3091 Посмотреть профиль Найти все сообщения от serg3091
 
Регистрация: 23.06.2013
Сообщений: 15

Сообщение от skrudjmakdak Посмотреть сообщение
так с чем вам помочь то?? с аяксом?
на оф сайте есть же пример отправки аякс:
вот урла
http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.Ajax

вот сам пример:
Ext.Ajax.request({
    url: 'request.php',
    params: {
        id: 1
    },
    success: function(response){
        var text = response.responseText;
        console.log(text);
    }
});


можно сделать функцию:
function sendAjax(_text)
	{
	Ext.Ajax.request(
		{
		url: 'request.php',
		params:
			{
			textButton: _text
			},
		success: function(response)
			{
			var text = response.responseText;
			console.log(text);
			}
		});
	}


и в событии вызывайте эту функцию:
...
fn: function()
	{
	sendAjax(this.text);
	//console.log(this.text)
	}
...
Совсем запутался, не получается ничего, как мне в grid теперь всё это аккуратненько положить ?
Ext.require([
            '*'
        ]);
		Ext.onReady(function() {
		
		Ext.define('WordListModel', {
        extend: 'Ext.data.Model',
        fields: [
					{name:'wordid', type: 'int'},
					{name:'wordval', type: 'string'},
					{name: 'last_update', mapping: 'last_update', type: 'date'}
				]
		});
		var store = Ext.create('Ext.data.Store', {
        model: 'WordListModel',
		buffered: true,
		//autoLoad: true,
		remoteSort: true,
		proxy: {
            type: 'ajax',
			timeout: 60000,
			enablePaging: true,
            url: 'controller/json.php',
			actionMethods: 'POST',
			reader: {
                root: 'wordsList',
				totalProperty: 'totalCount'
            },
			simpleSortMode: true,
        }
    });
            function sendAjax(_text){
                Ext.Ajax.request({
                            actionMethods: 'POST',
                            url: 'controller/json.php',
                            params:{
                                textButton: _text
                            },
                            success: function(response){
                                var text = response.responseText;
                            }
                        });
            };
            var alphabet = ['А', 'Б', 'В', 'Г', 'Д','Е','Ё','Ж','З','И','Й',
                            'К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х',
                            'Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я'];
            var objs = new Array();
            for (var i = 0; i < alphabet.length; i++)
                objs[i] = {
                    text: alphabet[i],
                    listeners:{
                            click:{
                                fn: function(){
                                    sendAjax(this.text);
                                    Ext.Msg.alert('Побуквенный поиск',"поиск по букве "+this.text);
                                }
                            }
                    }
                };
            var searchDoc = Ext.create('Ext.panel.Panel', {
                titleAlign:"center",
                title: 'Поиск',
                renderTo: Ext.getBody(),
                items:[{
                        xtype: 'textfield',
                        name: 'search',
                        fieldLabel: 'Поиск по маске',
                        allowBlank: false  // requires a non-empty value
                    }],
                bbar: [{
                    xtype: 'buttongroup',
                    width: '100%',
                    columns: 11,
                    title: 'Поиск',
                    items: objs
                }]
            });
			Ext.create('Ext.grid.Panel', {
				store: store,
					width:450,
					height:250,
					renderTo: Ext.getBody(),
					collapsible:true,
					loadMask: true,
					disableSelection: true,
					invalidateScrollerOnRefresh: false,
					viewConfig:
					{
						trackOver: false,
						forceFit:true,
						enableRowBody:true,
						showPreview:true
					},
					title:'Список слов',
						viewConfig: 
						{
							emptyText: 'Нет загруженных слов!'
						},
						columns:
						[
							{
								text: 'id(Номер)',
								flex: 5,
								dataIndex: 'wordid',
								sortable: false
							},
							{
								text: 'Слово',
								dataIndex: 'wordval',
								align: 'central',
								flex: 15,
								sortable: false
							},
							{
							text: 'Последнее обновление',
							xtype: 'datecolumn',
							format: 'm-d h:i a',
							flex: 20,
							dataIndex: 'last_update',
							sortable: true
						}
						]
						});
        });

помогите плз разобратся со store и ajax в нем....
Ответить с цитированием
  #6 (permalink)  
Старый 17.07.2013, 13:45
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

я так понял, вам надо по нажатию кнопки обновить стору (отфильтровать)?
тогда вам простой аякс тут ее нужен, надо так прописывать:
for (var i = 0; i < alphabet.length; i++)
	objs[i] = {
		text: alphabet[i],
		listeners:{
			click:{
				fn: function(){
					store.getProxy().extraParams = {textButton: this.text};
					Ext.Msg.alert('Побуквенный поиск',"поиск по букве "+this.text);
				}
			}
		}
	};
Ответить с цитированием
  #7 (permalink)  
Старый 17.07.2013, 15:32
Интересующийся
Отправить личное сообщение для serg3091 Посмотреть профиль Найти все сообщения от serg3091
 
Регистрация: 23.06.2013
Сообщений: 15

Сообщение от skrudjmakdak Посмотреть сообщение
я так понял, вам надо по нажатию кнопки обновить стору (отфильтровать)?
тогда вам простой аякс тут ее нужен, надо так прописывать:
что нужно жмакаем по кнопке узнаем какая кнопка нажата, и отправляем ее на сервак в качке параметра, на серваке ловлю , выгружаю всё из бд, и конвертирую в json , и в grid возращаю json
Ответить с цитированием
  #8 (permalink)  
Старый 17.07.2013, 15:38
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

ааа, сори-сори.. я дибил.. я забыл прописать строчку..
store.getProxy().extraParams = {textButton: this.text};//передаем в стору парамерт, тобишь нашу букву
sotre.load();//перезагружаем нашу стору, грид само собой обновится. (т.е. с сервера придут новые данные)
//обращаться будет по адресу указанному в сторах (url: 'request.php')
Ext.Msg.alert('Побуквенный поиск',"поиск по букве "+this.text);

п.с. значит я вас правильно понял))
Ответить с цитированием
  #9 (permalink)  
Старый 17.07.2013, 16:12
Интересующийся
Отправить личное сообщение для serg3091 Посмотреть профиль Найти все сообщения от serg3091
 
Регистрация: 23.06.2013
Сообщений: 15

Сообщение от skrudjmakdak Посмотреть сообщение
ааа, сори-сори.. я дибил.. я забыл прописать строчку..
store.getProxy().extraParams = {textButton: this.text};//передаем в стору парамерт, тобишь нашу букву
sotre.load();//перезагружаем нашу стору, грид само собой обновится. (т.е. с сервера придут новые данные)
//обращаться будет по адресу указанному в сторах (url: 'request.php')
Ext.Msg.alert('Побуквенный поиск',"поиск по букве "+this.text);

п.с. значит я вас правильно понял))
что то снова не правиьно делаю?
Ext.require([
            '*'
        ]);
		Ext.onReady(function() {
		
		Ext.define('WordListModel', {
        extend: 'Ext.data.Model',
        fields: [
					{name:'wordid', type: 'int'},
					{name:'wordval', type: 'string'},
					{name: 'last_update', mapping: 'last_update', type: 'date'}
				]
		});
		var store = Ext.create('Ext.data.Store', {
        model: 'WordListModel',
		buffered: true,
		remoteSort: true,
		proxy: {
            type: 'ajax',
			timeout: 60000,
			enablePaging: true,
            url: 'controller/json.php',
			actionMethods: 'POST',
			reader: {
                root: 'wordsList',
				totalProperty: 'totalCount'
            },
			simpleSortMode: true,
        }
    });
			//function sendAjax(_text){
			//Ext.Ajax.request({
			//actionMethods: 'POST',
			//url: 'controller/json.php',
			//  params:{
			//        textButton: _text
			//      },
			//        success: function(response){
			//              var text = response.responseText;
			//            }
			//          });
			//};
            var alphabet = ['А', 'Б', 'В', 'Г', 'Д','Е','Ё','Ж','З','И','Й',
                            'К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х',
                            'Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я'];
            var objs = new Array();
            for (var i = 0; i < alphabet.length; i++)
                objs[i] = {
                    text: alphabet[i],
                    listeners:{
                            click:{
                                fn: function(){
								store.getProxy().extraParams = {textButton: this.text};//передаем в стору парамерт, тобишь нашу букву
								sotre.load();//перезагружаем нашу стору, грид само собой обновится. (т.е. с сервера придут новые данные)
								//обращаться будет по адресу указанному в сторах (url: 'request.php')
								Ext.Msg.alert('Побуквенный поиск',"поиск по букве "+this.text);

                                }
                            }
                    }
                };
            var searchDoc = Ext.create('Ext.panel.Panel', {
                titleAlign:"center",
                title: 'Поиск',
                renderTo: Ext.getBody(),
                items:[{
                        xtype: 'textfield',
                        name: 'search',
                        fieldLabel: 'Поиск по маске',
                        allowBlank: false  // requires a non-empty value
                    }],
                bbar: [{
                    xtype: 'buttongroup',
                    width: '100%',
                    columns: 11,
                    title: 'Поиск',
                    items: objs
                }]
            });
			Ext.create('Ext.grid.Panel', {
				store: store,
					width:450,
					height:250,
					renderTo: Ext.getBody(),
					collapsible:true,
					loadMask: true,
					disableSelection: true,
					invalidateScrollerOnRefresh: false,
					viewConfig:
					{
						trackOver: false,
						forceFit:true,
						enableRowBody:true,
						showPreview:true
					},
					title:'Список слов',
						viewConfig: 
						{
							emptyText: 'Нет загруженных слов!'
						},
						columns:
						[
							{
								text: 'id(Номер)',
								flex: 5,
								dataIndex: 'wordid',
								sortable: false
							},
							{
								text: 'Слово',
								dataIndex: 'wordval',
								align: 'central',
								flex: 15,
								sortable: false
							},
							{
							text: 'Последнее обновление',
							xtype: 'datecolumn',
							format: 'm-d h:i a',
							flex: 20,
							dataIndex: 'last_update',
							sortable: true
						}
						]
						});
        });
Ответить с цитированием
  #10 (permalink)  
Старый 17.07.2013, 16:14
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

ммм. ну я на пальцах врятли что найду..
в консоль что то падает?
скажите ваш браузер
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В buttongroup не работают одновременно height и layout: vbox khusamov ExtJS 6 14.05.2012 17:32
Обновление события кнопки TheHappy Общие вопросы Javascript 0 06.03.2012 10:30
Получение данных строки грида при нажатии сторонней кнопки Allan Stark ExtJS 4 17.11.2011 19:21
Получение ссылки на объект в обработчике нажатия кнопки pauluss ExtJS 1 22.06.2011 15:27
заменяю один текст другим через прозрачность. кнопки конфликтуют. plishas Events/DOM/Window 7 12.01.2011 21:34