28.04.2016, 23:18
|
|
Соединяю Node.js и Ext JS
|
|
Регистрация: 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.
|
|
29.04.2016, 00:24
|
|
Соединяю Node.js и Ext JS
|
|
Регистрация: 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.
|
|
29.04.2016, 12:35
|
|
Соединяю Node.js и Ext JS
|
|
Регистрация: 25.06.2009
Сообщений: 1,033
|
|
Если я правильно понимаю, код функции calculate берется в виде текста и в нем заменяются все конструкции вида data.* на значения... А переменная data на входе в функцию похоже фиктивная и содержит пустые данные. Разве код функции можно получить в виде текста???
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
|
|
29.04.2016, 15:48
|
|
Профессор
|
|
Регистрация: 06.06.2014
Сообщений: 292
|
|
Думаю, можно. Ведь все классы загружаются через Экстовый лоадер, а он уже сам решает что сделать с полученным текстом. Да иначе и быть не может, ведь надо обрабатывать конструкции типа extend, controller и т.д.
|
|
29.04.2016, 15:50
|
|
Соединяю Node.js и Ext JS
|
|
Регистрация: 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.
|
|
29.04.2016, 21:11
|
|
Профессор
|
|
Регистрация: 21.05.2015
Сообщений: 321
|
|
Сообщение от khusamov
|
Разве код функции можно получить в виде текста???
|
Функция JavaScript это объект:
var fn = function foo() {
var bar = 42;
};
console.log(fn.toString());
;)
|
|
29.04.2016, 22:51
|
|
Соединяю Node.js и Ext JS
|
|
Регистрация: 25.06.2009
Сообщений: 1,033
|
|
о как.... под носом лежала, а не видел(
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
|
|
|
|