Javascript.RU

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

Не работает Ext.data.field.Field.calculate()?
Не работает Ext.data.field.Field.calculate()?

Воспроизведение бага в песочнице
https://fiddle.sencha.com/#fiddle/19h3

Ext.define("Employee", {
            extend: "Ext.data.Model",
            fields: [{
                name: "username",
                type: "string"
            }, {
                name: "name",
                type: "string",
                calculate: function(data) {
                    console.log("calculate", data)
                    var tpl = "{personlastname} {personname} {personmiddle}";
                    return new Ext.Template(tpl).apply(data);
                }
            }, {
                name: "personlastname",
                type: "string",
                
            }, {
                name: "personname",
                type: "string"
            }, {
                name: "personmiddle",
                type: "string"
            }]
            
        });
        
        var e = new Employee();
        e.set("personlastname", "Jon");
        e.set("personname", "Silver");
        e.set("personmiddle", "Bob");
        
        console.log("name =", e.get("name")); // Должен был показать "Jon Silver Bob"


https://www.sencha.com/forum/showthr...#post113 3954
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.

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

The method can't infer any dependent fields because they are encoded in a string. You'll need to explicitly declare them:

name: 'string',
depends: ['personlastname', 'personname', 'personmiddle'],
calculate: ....
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #3 (permalink)  
Старый 29.04.2016, 12:35
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Если я правильно понимаю, код функции calculate берется в виде текста и в нем заменяются все конструкции вида data.* на значения... А переменная data на входе в функцию похоже фиктивная и содержит пустые данные. Разве код функции можно получить в виде текста???
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #4 (permalink)  
Старый 29.04.2016, 15:48
Аватар для Infarch
Профессор
Отправить личное сообщение для Infarch Посмотреть профиль Найти все сообщения от Infarch
 
Регистрация: 06.06.2014
Сообщений: 292

Думаю, можно. Ведь все классы загружаются через Экстовый лоадер, а он уже сам решает что сделать с полученным текстом. Да иначе и быть не может, ведь надо обрабатывать конструкции типа extend, controller и т.д.
Ответить с цитированием
  #5 (permalink)  
Старый 29.04.2016, 15:50
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

В данном случае похоже текст берет не загрузчик, а сам класс Field, где определяется calculate. Надо бы потом внутренности посмотреть. Любопытно как они это делают. Но на оф. сайте ответили The method can't infer any dependent fields because they are encoded in a string.
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #6 (permalink)  
Старый 29.04.2016, 21:11
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

Сообщение от khusamov Посмотреть сообщение
Разве код функции можно получить в виде текста???
Функция JavaScript это объект:

var fn = function foo() {
    var bar = 42;
};

console.log(fn.toString());


;)
Ответить с цитированием
  #7 (permalink)  
Старый 29.04.2016, 22:51
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

о как.... под носом лежала, а не видел(
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JS: работает на сервере, не работает из папки -majestic- Общие вопросы Javascript 2 02.08.2012 14:41
Не работает push! Динамическая вставка TSEH25 ExtJS 5 03.07.2012 13:00
jQyery функция странно работает! Midel Общие вопросы Javascript 4 08.04.2012 13:40
помогите найти ошибку (работает в IE но не работает в Firefox) Len4ik Javascript под браузер 2 11.05.2010 15:41
Safari + ajax некорректно работает, а в других работает demi AJAX и COMET 35 15.07.2009 14:11