Показать сообщение отдельно
  #1 (permalink)  
Старый 21.06.2015, 20:36
Новичок на форуме
Отправить личное сообщение для shmihshmih Посмотреть профиль Найти все сообщения от shmihshmih
 
Регистрация: 09.05.2015
Сообщений: 6

Ext.js 4.2. Как связать кнопки с таблицей?
Доброго времени суток,друзья. Такая проблема: создал grid трехколоночный, таблица подгружается с json, каждую строку можно редактировать по двойному щелчку. Есть две кнопки: "Добавить элемент" и "Удалить элемент". По сути, задача тривиальная, но что-то никак не могу понять как это добро связать друг с другом. Что есть: при нажатии на добавление вылезает окно(window) с тремя textfield и кнопкой "save". Проблема в том, что никак не пойму какую функцию написать чтобы при нажатии на "save" в таблицу добавились введенные данные и таблица обновилась.
Выкладываю код приложения , controller и button:
Приложение:
Ext.application({
    requires: ['Ext.container.Viewport'],
    name: 'fruit',
    appFolder: 'app',
    controllers: ['fruitcontrol'],
    launch: function() {
        Ext.create('Ext.container.Viewport', {
            layout: {
                type: 'vbox',
                align: 'stretch'
            },
            items: [
                {
                    xtype: 'fruitview',
                },
                {
                    xtype: 'addbutton',
                },
                {
                    xtype: 'deletebutton',
                }
            ]
        });
    }
});


controller:

Ext.define('fruit.controller.fruitcontrol', {
	extend: 'Ext.app.Controller',
	views: ['fruitview','fruitedit','deletebutton','addbutton'],
	stores: ['allfruits'],
	models: ['fruitmodel'],
	init: function() {
		this.control({
			'viewport > fruitview': {
				itemdblclick: this.editfruit
			},
			'fruitedit button[action=save]': {
				click: this.newfruits
			},
		});
	},
editfruit: function(grid, record) {
	var view = Ext.widget('fruitedit');
        view.down('form').loadRecord(record);
},
newfruits: function(button) {
	var win    = button.up('window'),
        form   = win.down('form'),
        record = form.getRecord(),
        values = form.getValues();
    	record.set(values);
    	win.close();
    	this.getallfruitsStore().sync();
}
}
);


button:
Ext.define( 'fruit.view.addbutton', {
	extend: 'Ext.button.Button',
	alias: 'widget.addbutton',
	title: 'Изменить фрукт',
	layout: 'fit',
	autoShow: true,
	text: 'Добавить фрукт',
    handler: function() {
    Ext.create('Ext.window.Window', {
    extend: 'Ext.window.Window' ,
    title: 'Добавить фрукт',
    models: ['fruitmodel'],
	stores: ['allfruits'],
    height: 200,
    width: 400,
    layout: 'fit',
    autoShow: true,
  	items: [{
				xtype: 'form',
				items: [

					{
						xtype: 'textfield',
						name: 'fruit',
						fieldLabel: 'Фрукт',

					},
					{
						xtype: 'textfield',
						name: 'taste',
						fieldLabel: 'Вкус'
					},
					{
						xtype: 'textfield',
						name: 'color',
						fieldLabel: 'Цвет'
					} ,
					{
                		text: 'Save',
                		xtype: 'button',
                		handler: function() {
                			// allfruits.add( fruit: this.name , taste: this.taste , color: this.color);
                			alert('fgfgfgg');
                		}
            }
    ]
     } ],
    ,
	saves: function() {
		alert('dfdfdfdf');
	}
		 })}});

Заранее спасибо!
Ответить с цитированием