Мы используем Extjs 5.x для создания одностраничного приложения на основе браузера. Все работает нормально, если используется простая модель &. Если мы пытаемся использовать любую оболочку для прокси-сервера, она генерирует ошибку во время выполнения после того, как sencha cmd build.Имеет ли данные Extjs Model/Store поддержку любого метода-посредника прокси-сервера?
Вот простая модель статьи:
Ext.define('Pos.model.Article', {
extend : 'Ext.data.Model',
alias : 'widget.Article',
idProperty : 'id',
fields : [
{ name : 'id', mapping : 'id', type : 'int' },
{ name : 'code', mapping : 'code', type : 'string'},
{ name : 'name', mapping : 'name', type : 'string'},
{ name : 'rate', mapping : 'rate', type : 'float' },
{ name : 'expireDate', mapping : 'expireDate', type : 'date' }
],
proxy : {
type : 'rest',
noCache : true,
limitParam : 'limit',
startParam : 'start',
url : '/pos/article',
reader : {
type : 'json',
rootProperty : 'data',
totalProperty : 'total',
successProperty : 'success',
messageProperty : 'message',
implicitIncludes: true
},
writer :{
type : 'json',
writeAllFields : true
},
simpleSortMode : true
}
});
Вот простой магазин статьи:
Ext.define('Pos.store.Articles', {
extend : 'Ext.data.Store',
model : 'Pos.model.Article',
idProperty : 'id',
autoLoad : false,
autoSync : false,
remoteSort : true,
remoteFilter : true,
pageSize : 25,
proxy : {
type : 'rest',
noCache : true,
limitParam : 'limit',
startParam : 'start',
url : '/pos/article/store',
reader : {
type : 'json',
rootProperty : 'data',
totalProperty : 'total',
successProperty : 'success',
messageProperty : 'message',
implicitIncludes: true
},
writer :{
type : 'json',
writeAllFields : true
},
simpleSortMode : true
},
sorters : [{
property : 'name',
direction: 'ASC'
}]
});
Когда мы используем простую модель и хранить его работают отлично. Но наша цель заключалась в удалении котельной таблички кода по этой причине, мы пытаемся создать некоторый метод обертки для удаления избыточных кодов. Вот простая обертка прокси-строитель для рассмотрения:
var Cki=Cki||{};
;Cki.proxy||(function($){
var proxy = {
$package : 'Cki',
$class : 'Cki.proxy',
resolveUrl : function(action){
var ctxPath = '/pos/',
url = ctxPath + action;
return url;
},
getReader : function(){
var reader = {
type : 'json',
rootProperty : 'data',
totalProperty : 'total',
successProperty : 'success',
messageProperty : 'message',
implicitIncludes: true
};
return reader;
},
getWriter : function(){
var writer = {
type : 'json',
writeAllFields : true
};
return writer;
},
getRestProxy : function(url, noCache){
url = (typeof url === 'undefined') ? '' : url;
noCache = (typeof noCache === 'undefined') ? false : noCache;
var restProxy = {
type : 'rest',
noCache : noCache,
limitParam : 'limit',
startParam : 'start',
url : proxy.resolveUrl(url),
reader : proxy.getReader(),
writer : proxy.getWriter(),
simpleSortMode : true
};
return restProxy;
}
};
$.proxy = proxy;
}(Cki));
После обертка метода прокси-строителя готов, мы могли бы использовать его для упаковки прокси внутри модели и магазина. Вот обернутый прокси Модель:
Ext.define('Pos.model.Article', {
extend : 'Ext.data.Model',
alias : 'widget.Article',
idProperty : 'id',
fields : [
{ name : 'id', mapping : 'id', type : 'int' },
{ name : 'code', mapping : 'code', type : 'string'},
{ name : 'name', mapping : 'name', type : 'string'},
{ name : 'rate', mapping : 'rate', type : 'float' },
{ name : 'expireDate', mapping : 'expireDate', type : 'date' }
],
proxy : Cki.proxy.getRestProxy('article')
});
Вот завернутые Proxy Store:
Ext.define('Pos.store.Articles', {
extend : 'Ext.data.Store',
model : 'Pos.model.Article',
idProperty : 'id',
autoLoad : false,
autoSync : false,
remoteSort : true,
remoteFilter : true,
pageSize : 25,
proxy : Cki.proxy.getRestProxy('article/store'),
sorters : [{
property : 'name',
direction: 'ASC'
}]
});
Это генерирует следующее сообщение об ошибке во время выполнения:
- Синхронный XMLHttpRequest в основном потоке устарела из-за его вредного воздействия на опыт конечного пользователя. Для получения дополнительной помощи проверьте https://xhr.spec.whatwg.org/.
- http://localhost/pos/static/Ext-all.js Не удалось загрузить ресурс: сервер ответил со статусом 404 (не найден) выборки @ Ext-all.js: 22
- VM42: 3 Uncaught TypeError: C не является конструктором
Является ли класс 'My.data.proxy.Rest' должно быть место для' ./overrides/data/proxy/ 'или где мы можем сообщить? –
Я не думаю, что это должно быть переопределением, просто расширение .. Таким образом, вы можете разместить все, что захотите ... возможно, в папке с утилитами или что-то в этом роде. Вы должны добавить его в требуемую конфигурацию – fradal83