Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.08.2015, 12:23
Новичок на форуме
Отправить личное сообщение для DemFear Посмотреть профиль Найти все сообщения от DemFear
 
Регистрация: 10.08.2015
Сообщений: 3

Extjs стирается внесенное описание при переходе к другому объекту
Всем привет!

Прошу вас помочь мне в одной проблемке.
Реализована возможность изменять описание объекта, но при переходе к следующему объекту внесенное описание стирается и там снова появляется «Текст по умолчанию».
Однако описание сохраняется, когда после ввода текста кликнуть мышкой на пустое поле.

MyNode = Ext.extend(Ext.tree.TreeNode, {
        consructor: function (attributes) {
            var description = attributes.description || '';
            MyNode.superclass.constructor.call(this, attributes);
        },
        setDescription: function (newDescription) {
            this.attributes.description = newDescription;
        }
    });

    Ext.onReady(function () {
        var tree;
        var width = 200;
        var height = 300;
        var offsetX = 0;
        var offsetY = 0;
        var treeTitle = 'Дерево';
        function showTree() {
             tree  = Ext.getCmp(treeTitle);
            if (!tree) {
                tree = Window(width, height, offsetX, offsetY, treeTitle, Tree(height, width));
            }
                  tree.show();
        }
        var button = new Ext.Button({
            text: 'Задание',
            renderTo: document.body,
            handler: showTree
        });
              



    function Window(xWidth, xHeight, offsetX, offsetY, xTitle, filling) {
        return new Ext.Window({
            renderTo: document.body,
            title: xTitle,
            id: xTitle,
            draggable: false,
            resizable: false,
            width: xWidth,
            height: xHeight,
            closeAction: 'hide',
            y: offsetY,
            x: offsetX,
            items: filling
        });
    }

  function Tree(xHeight, xWidth) {
        return new Ext.tree.TreePanel({
            rootVisible: true,
            root: new MyNode({
                text: 'Корень',
                description: 'Введите текст',
                dragable: false,
                expanded: true
            }),
            contextMenu: new Ext.menu.Menu({
                items: [{
                    id: 'delete-node',
                    text: 'Удалить объект'
                }, {
                    id: 'add-node',
                    text: 'Добавить объект'
                }],
                listeners: {
                    itemclick: function (item) {
                        var curNode;
                        curNode = item.parentMenu.contextNode;
                        switch (item.id) {
                            case 'delete-node':
                                if (curNode.parentNode) {
                                    curNode.remove(true);
                                } else {
                                    Ext.Msg.alert('Внимание', 'Удаление корневого элемента запрещено!');
                                }
                                break;
                            case 'add-node':
                                curNode.appendChild(new MyNode({
                                    text: 'Объект',
                                    dragable: false,
                                    expanded: true,
                                    description: 'Введите текст'
                                }));
                                break;
                        }
                    }
                }
            }),
            listeners: {
                contextmenu: function (node, e) {
                    node.select();
                    var c = node.getOwnerTree().contextMenu;
                    c.contextNode = node;
                    c.showAt(e.getXY());
                },
                click: function (node, e) {
                    var formView = Ext.getCmp('Свойства');
                    if (formView) formView.close();
                    var formData = form(xHeight - 60, xHeight - 140, node);
                    formView = Window(xHeight, xHeight, xWidth, 0, 'Свойства', formData);
                    formView.show();
                }

            }
        });
          }


           function form(xWidth, xHeight, node) {
        return new Ext.FormPanel({
            renderTo: Ext.getCmp(),
            padding: 20,
            labelAlign: 'top',
            items: [{
                xtype: 'textfield',
                fieldLabel: 'Название',
                value: node.attributes.text,
                width: xWidth,
                listeners: {
                    change: function (element, newV, oldV) {
                        node.setText(newV);
                        
                    }
                }
            }, {
                xtype: 'textarea',
                fieldLabel: 'Описание',
                value: node.attributes.description,
                width: xWidth,
                height: xHeight,
                listeners: {
                    change: function (element, newV, oldV) {
                        node.setDescription(newV);
                    }
                }
            }]
        });
    }
       });
Ответить с цитированием
  #2 (permalink)  
Старый 10.08.2015, 15:53
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Вы можете все это в песочницу вогнать?
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #3 (permalink)  
Старый 10.08.2015, 15:54
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

хмм... у вас что, версия Ext 3.x?
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #4 (permalink)  
Старый 10.08.2015, 16:27
Новичок на форуме
Отправить личное сообщение для DemFear Посмотреть профиль Найти все сообщения от DemFear
 
Регистрация: 10.08.2015
Сообщений: 3

Да версия 3.4.0.
По поводу загнать в песочницу не совсем понимаю. я просто начинающий программист. Тем более в js.
Ответить с цитированием
  #5 (permalink)  
Старый 10.08.2015, 16:34
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Цитата:
По поводу загнать в песочницу не совсем понимаю.
Вот песочница https://fiddle.sencha.com/#home

там и для третьей версии есть, так что можно и ваш пример туда загнать


Цитата:
я просто начинающий программист.
Странно. Если вы недавно начали использовать Ext, то по идее должны использовать последнюю версию. Шестую.

Если вы давно уже используете, то такие проблем не должно быть.

Можете объяснить, как так вышло, что в работе используете трешку?
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #6 (permalink)  
Старый 10.08.2015, 16:40
Новичок на форуме
Отправить личное сообщение для DemFear Посмотреть профиль Найти все сообщения от DemFear
 
Регистрация: 10.08.2015
Сообщений: 3

Задание от работодателя использовать именно эту версию.)
Спасибо за ответ.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
показать/убрать текст при переходе с кнопки на кнопу radio zazula Общие вопросы Javascript 12 03.08.2015 11:53
Выпадающее меню на JS (подкатегории) Trueplayer Events/DOM/Window 5 18.09.2014 22:29
Древовидное меню и селекторы youstm jQuery 6 15.09.2014 12:42
Выделение изображения (полностью или рамки) при переходе на страницу scpooch Элементы интерфейса 29 29.01.2013 18:35
Проблемы совместимости при использовании ExtJS в браузерах IE & Opera Allan Stark ExtJS 4 18.09.2012 10:28