11.06.2016, 00:59
|
|
Соединяю Node.js и Ext JS
|
|
Регистрация: 25.06.2009
Сообщений: 1,033
|
|
Не находит модель No such Entity "Shop.model.test2.Test2"
Я сделал модель Shop.model.test2.Test2
И в итоге получил ошибку
Ext.data.schema.Schema.lookupEntity(): No such Entity "Shop.model.test2.Test2".
Хотя модель Shop.model.Test он находит.
Почему модель Shop.model.test2.Test2 не находит?
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
|
|
11.06.2016, 01:18
|
|
Соединяю Node.js и Ext JS
|
|
Регистрация: 25.06.2009
Сообщений: 1,033
|
|
интересное дело. Цифры 2 убрал, сразу нашел. Как так???
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
|
|
13.06.2016, 21:16
|
|
Профессор
|
|
Регистрация: 21.05.2015
Сообщений: 321
|
|
А класс Shop.model.test2.Test2 где-нибудь указан как зависимость?
|
|
13.06.2016, 22:00
|
|
Соединяю Node.js и Ext JS
|
|
Регистрация: 25.06.2009
Сообщений: 1,033
|
|
Я модели не указываю в requery. А надо?
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
|
|
13.06.2016, 22:32
|
|
Профессор
|
|
Регистрация: 21.05.2015
Сообщений: 321
|
|
Конечно надо. Модель это класс, его надо загрузить. Чтобы загрузить, надо о нём знать.
|
|
14.06.2016, 00:59
|
|
Соединяю Node.js и Ext JS
|
|
Регистрация: 25.06.2009
Сообщений: 1,033
|
|
Почему он тогда Shop.model.Test загрузил?
Разве в Sencha Cmd не избавились окончательно от require?
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
|
|
14.06.2016, 03:16
|
|
Профессор
|
|
Регистрация: 21.05.2015
Сообщений: 321
|
|
Сообщение от khusamov
|
Почему он тогда Shop.model.Test загрузил?
|
Точно не могу сказать, не видя кода. Вероятное объяснение: модель Shop.model.Test поименована где-то просто как Test, а поскольку её namespace совпадает с таковым для всего приложения, то имя класса было получено автоматически как App namespace + '.' + model name. Если вы указали это имя в массиве models какого-либо контроллера, то примерно так и произошло.
В случае же с моделью Shop.model.test2.Test2 такой подход уже не сработает, т.к. namespace Shop.model.test2 нигде не прописано. Для таких случаев есть конфиг namespaces: http://docs.sencha.com/extjs/6.0/6.0...cfg-namespaces
Цитата:
|
Разве в Sencha Cmd не избавились окончательно от require?
|
Конечно же нет. Большую часть случаев она отлавливает, но все 100% предусмотреть в принципе невозможно. Поэтому я всегда рекомендую не играть в лотерею, а указывать requires явным образом. Экономия 10 секунд на наборе имени класса может потом обернуться потерей часов на поиски странных багов.
|
|
14.06.2016, 15:30
|
|
Соединяю Node.js и Ext JS
|
|
Регистрация: 25.06.2009
Сообщений: 1,033
|
|
Цитата:
|
Вероятное объяснение: модель Shop.model.Test поименована где-то просто как Test, а поскольку её namespace совпадает с таковым для всего приложения, то имя класса было получено автоматически как App namespace + '.' + model name.
|
Конечно я нигде полное имя класса не задаю. А именно Test. И вторую модель я точно так же описываю, а именно test2.Test2, но он его не грузит, а первый грузит.
Цитата:
|
т.к. namespace Shop.model.test2 нигде не прописано
|
Как это не прописан? Точно так же я прописал (namespace: "Shop.model"). Там вообще для всех моделей у меня прописан ns. В базовой модели.
Ext.define("Shop.model.Base", {
extend: "Ext.data.Model",
requires: ["Ext.data.proxy.Direct"],
fields: [{
name: "id",
type: "number"
}],
schema: {
namespace: "Shop.model",
urlPrefix: "Server",
proxy: {
type: "direct",
api: {
create: "{prefix}.{entityName}.create",
read: "{prefix}.{entityName}.read",
update: "{prefix}.{entityName}.update",
destroy: "{prefix}.{entityName}.destroy"
},
//<debug>
withCredentials: true,
//</debug>
reader: {
type: "json",
rootProperty: "data",
messageProperty: "message"
}
}
}
});
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
|
|
14.06.2016, 15:33
|
|
Соединяю Node.js и Ext JS
|
|
Регистрация: 25.06.2009
Сообщений: 1,033
|
|
В общем он заработал, если убрать двойки
stores: {
testStore: {
model: "test.Test",
autoLoad: true
}
}
Таким образом, sencha не любит в именах моделей цифры. Могли бы и написать.
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
|
|
14.06.2016, 15:34
|
|
Соединяю Node.js и Ext JS
|
|
Регистрация: 25.06.2009
Сообщений: 1,033
|
|
Кстати, я про двойки уже писал. То есть вопрос другой теперь. Чего это сенча экст не любит цифры в именах моделей? Это дискриминация такая?
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
|
|
|
|