Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.05.2012, 04:57
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Как поменять frame у компонента grid?
У grid-а есть конфиг frame. Я его выставляю как-то при создании grid-а. И потом, хочу его изменить. Делаю как по инструкции сказано:

grid.setFrame(false)


И не тут-то было. Такого метода нету-с.

И никакого иного метода, который помог бы поменять это свойство тоже нету. Или не нашел.

Кто знает как поменять значение этого поля?
Ответить с цитированием
  #2 (permalink)  
Старый 14.05.2012, 15:08
С++/C# modest developer
Отправить личное сообщение для nekto_O Посмотреть профиль Найти все сообщения от nekto_O
 
Регистрация: 07.11.2011
Сообщений: 244

Сообщение от khusamov
Делаю как по инструкции сказано:
где такое сказано?
Сообщение от khusamov
И не тут-то было. Такого метода нету-с.
в доке нет, но костыль то всегда можно создать))
например:
setFrame: function(v) {
        if(v === this.frame) return;
        this.frame = v;
        var ui = 'default'; // TO-DO
        this.setUI(ui + (v ? '-framed' : ''));
}

В 4.1 работать будет правельно, в версиях ниже - коряво, но если метод setUi доработать (по примеру 4.1) то проблем вообще не будет.

Последний раз редактировалось nekto_O, 14.05.2012 в 15:14.
Ответить с цитированием
  #3 (permalink)  
Старый 14.05.2012, 18:07
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Цитата:
Сообщение от khusamov "Делаю как по инструкции сказано:"
где такое сказано?
Вот тут:
http://docs.sencha.com/ext-js/4-0/#!/guide/class_system

Цитирую:

Цитата:
2. Configuration
In Ext JS 4, we introduce a dedicated config property that gets processed by the powerful Ext.Class pre-processors before the class is created. Features include:

Configurations are completely encapsulated from other class members
Getter and setter, methods for every config property are automatically generated into the class' prototype during class creation if the class does not have these methods already defined.
An apply method is also generated for every config property. The auto-generated setter method calls the apply method internally before setting the value. Override the apply method for a config property if you need to run custom logic before setting the value. If apply does not return a value then the setter will not set the value. For an example see applyTitle below.
Ответить с цитированием
  #4 (permalink)  
Старый 14.05.2012, 19:09
С++/C# modest developer
Отправить личное сообщение для nekto_O Посмотреть профиль Найти все сообщения от nekto_O
 
Регистрация: 07.11.2011
Сообщений: 244

а причем здесь это?
неужели вы думаете что если даже не указывать свойство, конструктор создаст соответствующие геттер и сеттер? При чем именно в нужном виде?
Хорошо, допустим мы укажем нужное нам свойство в конфиге:
Ext.define('MyPanel', {
    extend: 'Ext.panel.Panel',
    config: {
         frame: true
    }
});

При создании объекта у него будут сгенерированы методы getFrame() и setFrame().
var panel = Ext.create('MyPanel', {
    renderTo: Ext.getBody()
});
console.log(panel.getFrame); // 'function'
console.log(panel.setFrame); // 'function'

Да, мы видим что они действительно созданы. Геттер как и положено возвращает текущее значение свойства, сеттер устанавливает заданное (параметром). Но вот ведь незадача (!) внешний вид панели ничуть не изменится при вызове setFrame. Почему?
Потому что он определяется во время инициализации (в зависимости от значения свойства frame присваиваются классы соответствующим компонентам). И чтобы динамически изменить внешний вид, как вы хотите, нужно как раз изменить классы компонентов и сгенерированный метод setFrame вам нисколько не поможет.
Ответить с цитированием
  #5 (permalink)  
Старый 14.05.2012, 19:37
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Цитата:
Потому что он определяется во время инициализации (в зависимости от значения свойства frame присваиваются классы соответствующим компонентам). И чтобы динамически изменить внешний вид, как вы хотите, нужно как раз изменить классы компонентов и сгенерированный метод setFrame вам нисколько не поможет.
Да и для того, чтобы динамически все менялось у Ext задуман еще специальный метод, а именно apply* (в нашем случае applyFrame()). Так что логично думать, что setFrame сделает все что нужно... Но он этого не делает.

Я уже на многие такие конфиги наткнулся. Наверное методы apply* для них не прописаны еще. Типа потом допишут.

За костыль спасибо, мне еще придется разобраться с методом setUI, назначение которого мне не совсем пока ясно. Придется пока на костылях ходить, ждать когда они эти apply* допишут.
Ответить с цитированием
  #6 (permalink)  
Старый 14.05.2012, 19:57
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Цитата:
Да, мы видим что они действительно созданы. Геттер как и положено возвращает текущее значение свойства, сеттер устанавливает заданное (параметром). Но вот ведь незадача (!) внешний вид панели ничуть не изменится при вызове setFrame. Почему?
Кстати, вы какой-то странный пример тут привели. Вы тут сделали свой собственный класс, где объявили в конфиге frame.

А я имел ввиду класс, который создан в Ext. В нем как раз метода setFrame даже не определен почему-то, хотя конфиги вроде как есть по документации.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие div блока при первом визите на сайт Nushaba Общие вопросы Javascript 28 20.12.2013 21:24
Как правильно послать XML в POST запросе LowCoder AJAX и COMET 10 15.07.2009 23:20
Мигающий текст как поменять цвет? Cerver Общие вопросы Javascript 2 08.05.2009 03:37
Как поменять местами элементы в дереве элемента родителя? rar11 Events/DOM/Window 8 01.04.2009 18:53
Как поменять SRC у Img в Pocket IE Maxidrom Events/DOM/Window 2 08.10.2008 15:05