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); } } }] }); } }); |
Вы можете все это в песочницу вогнать?
|
хмм... у вас что, версия Ext 3.x?
|
Да версия 3.4.0.
По поводу загнать в песочницу не совсем понимаю. я просто начинающий программист. Тем более в js. |
Цитата:
там и для третьей версии есть, так что можно и ваш пример туда загнать Цитата:
Если вы давно уже используете, то такие проблем не должно быть. Можете объяснить, как так вышло, что в работе используете трешку? |
Задание от работодателя использовать именно эту версию.)
Спасибо за ответ. |
Часовой пояс GMT +3, время: 02:22. |